Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过HTTP Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能的,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
//解压缩Tomcat
tar –zxvf apache-tomcat-8.5.27.tar.gz
//进入Tomcat目录
cd apache-tomcat-8.5.27
//启动Tomcat
./bin/startup.sh
//关闭防火墙
servcie iptables stop
chkconfig iptables off
//解压缩Solr
tar -zxvf solr-7.3.0.tgz
复制 solr\server\solr-webapp\webapp 到 Tomcat\webapps\
文件夹改名为 solr
复制 solr\server\lib\ext 中的 jar 到 Tomcat\webapps\solr\WEB-INF\lib 目录中
复制 solr\server\lib 中的 jar 到 Tomcat\webapps\solr\WEB-INF\lib 目录中
复制 solr\dist 中的 jar 到 Tomcat\webapps\solr\WEB-INF\lib 目录中
复制 solr\server\resources\log4j.properties 到 Tomcat\webapps\solr\WEB-INF\classes 目录
在 Tomcat 目录下建立 solrhome 目录(存放Solr实例) 在solrhome目录下创建 bwf 目录 (具体的一个Solr实例)
复制 solr\example\example-DIH\solr\solr\ 所有文件 到 Tomcat/solrhome/bwf 目录
复制 solr/server/solr/ 所有文件 到 Tomcat/solrhome 目录
编辑 Apache/webapps/solr/WEB-INF/web.xml
|
注释掉
启动Tomcat服务器
通过浏览器访问:http://172.31.78.87:8080/solr/index.html
复制 solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.5.0.jar 到 Tomcat/webapps/solr/WEB-INF/lib/
编辑 bwf/conf/managed-schema:
|
复制 IKAnalyzer.cfg.xml , ext.dic和stopword.dic 到 Tomcat/webapps/solr/WEB-INF/classes 目录下
ext.dic 里扩展中文分词如:博为峰
复制 IKAnalyzer2017_6_6_0.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录
编辑 bwf/conf/managed-schema:
|
复制 pinyin4j-2.5.0.jar、pinyinAnalyzer.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录
编辑 bwf/conf/managed-schema:
|
managed-schema.xml配置索引字段:
|
solr-data-config.xml配置数据源:
|
复制 mysql-connector-java-5.1.30.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录
重启 Tomcat
通过浏览器访问:http://172.31.78.87:8080/solr/index.html
添加POM依赖
|
实体对象索引映射
public class Product implements Serializable { @Field("id") private String prodId; @Field private String prodSn; …… } |
SolrClient使用
// 定义Solr服务器及实例访问地址 String baseUrl = "http://172.31.79.19:8080/solr/bwf"; // 创建SolrClient操作对象 HttpSolrClient solrClient= new HttpSolrClient.Builder(baseUrl) .withConnectionTimeout(10000) .withSocketTimeout(60000) .build(); |
SolrClient添加/修改索引
// 准备要添加的实体对象 Product prod = new Product(); prod.setProdId("100001"); prod.setProdName("测试商品1"); // 创建索引 solrClient.addBean(prod); // 提交事务 solrClient.commit(); |
SolrClient删除索引
// 根据Id删除索引 solrClient.deleteById("100001"); // 提交事务 solrClient.commit(); |
SolrClient搜索索引
// 准备搜索语句 SolrQuery query = new SolrQuery("prod_keywords:boweifeng"); // 为搜索添加索引字段 query.addField("id"); query.addField("prodName"); query.addField("prodContent"); query.setRows(100); // 发送查询 QueryResponse response = solrClient.query(query); solrClient.commit(); // 查询结果转换实体对象 List // 显示搜索结果 for( Product p : list ) { System.out.println(p.getProdId()+"\t"+p.getProdName()+"\t"+p.getProdContent()); } |
添加spring-solr.xml配置文件:
|