企业WEB项目通过solr实现商品搜索功能

本文详细介绍了如何在企业WEB项目中利用Solr实现商品搜索功能,包括Solr的简介、安装配置、索引库维护、SolrJ客户端的使用,以及将商品信息导入索引库和实现搜索功能的步骤,最后对搜索服务进行了测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

WEB项目中搜索功能是必不可少的,然而如果我们每次搜索都去数据库查询,将极大浪费性能,因此,我们需要一个全文搜索服务器——Solr。本博文将详细介绍Solr服务的搭建搜索功能的实现。

一、Solr

1.Solr简介

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

简单来说,就是Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务。

2.Solr的安装及配置

详细安装过程及配置参照另一篇博客《Linux下Solr的安装及配置(CentOS为例)》

3.Solr界面功能

img

img

img

img

img

4.维护索引库

添加:添加一个json格式的文件就可以。

修改:在solr中没有update,只需要添加一个新的文档,要求文档id和被修改文档的id一致。原理是先删除后添加。

删除:使用xml格式。

img

删除两种方法:

1、根据id删除:

<delete>

<id>test001</id>

</delete>

<commit/>

2、根据查询删除:

<delete>

<query>*:*</query>

</delete>

<commit/>

5.SolrJ客户端

SolrJ是一个使Java应用程序可以轻松与Solr对话的API。SolrJ隐藏了许多连接到Solr的细节,并允许您的应用程序通过简单的高级方法与Solr进行交互。

maven工程需要依赖solrj的jar包

<!-- solr客户端 -->
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
</dependency>

solrj的使用

public class SolrJTest {
   
   
	@Test
	public void addDocument() throws Exception{
   
   
		//创建一个连接
		SolrServer solrServer = new HttpSolrServer("http://192.168.10.130:8080/solr");
		//创建一个文档对象
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "test001");
		document.addField("item_title", "测试视频");
		document.addField("item_price", 53156);
		//把文档对象写入索引库
		solrServer.add(document);
		//提交
		solrServer.commit();
	}
	
	@Test
	public void deleteDocument() throws Exception{
   
   
		SolrServer solrServer = new HttpSolrServer("http://192.168.10.130:8080/solr");
		//solrServer.deleteById("test001");
		solrServer.deleteByQuery("*:*");//删除所有
		solrServer.commit();
	}
	
	@Test
	public void queryDocument() throws Exception{
   
   
		SolrServer solrServer = new HttpSolrServer("http://192.168.10.130:8080/solr");
		//创建一个查询对象
		SolrQuery query = new SolrQuery();
		//设置查询条件
		query.setQuery("*:*");
		//设置分页参数
		query.setStart(20);
		query.setRows(20);
		//执行查询
		QueryResponse response = solrServer.query(query);
		//去查询结果
		SolrDocumentList solrDocumentList = response.getResults();
		System.out.println("共查到记录:"+solrDocumentList.getNumFound());
		for (SolrDocument solrDocument : solrDocumentList) {
   
   
			System.out.println(solrDocument.get("id"));
			System.out.println(solrDocument.get("item_title"));
			System.out.println(solrDocument.get("item_price"));
			System.out.println(solrDocument.get("item_image"));
		}
	}
}

二、把商品信息导入到索引库

使用java程序读取mysql数据库中的商品信息,然后创建solr文档对象,把商品信息写入索引库。

需要发布一个服务。 为了灵活的进行分布式部署需要创建一搜素的服务工程发布 搜素服务。Taotao-search。

1.系统架构

img

2.创建taotao-search工程

img

配置:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值