需求分析:
门户有一个搜索功能,需要发布rest服务让pc端,移动端调用。根据关键词搜索,得到json格式的数据。根据项目需求,采用了全文搜索引擎solr提供搜索系统,发布搜索服务。
简单介绍一下solr,在了解solr之前你要清楚什么是索引库。就是所有目录的集合。对于全文检索也是类似的原理,它可以归结为两个过程:1.索引创建(Indexing)2. 搜索索引(Search)。Solr/Lucene采用的是一种反向索引,所谓反向索引:就是从关键字到文档的映射过程,保存这种映射这种信息的索引称为反向索引。
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。基于Luncene开发的还有一个分布式的索引系统ElasticSearch。感兴趣的可以研究。
solr服务客户端:
因为是通过http协议提供solr的后台服务,项目中需要加入一个新的maven工程。后台使用ssm搭建,细节就不展示了。需要注意的是,solr服务的客户端需要在maven中引用jar包,如下:
<!-- solr客户端 -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>
solr服务端搭建:
1.前提linux下有jdk和tomcat,因为solr需要把war包扔到tomcat中运行。jdk和tomcat安装过程略。
2.解压solr压缩包 根目录下 tar -zxf solr-4.10.3.tgz.tgz
3.部署war /solr-4.10.3/dist/solr-4.10.3.war 放到 /usr/local/tomcats/tomcat1/webapps 下
4.启动tomcat解压war /usr/local/tomcats/tomcat1/bin/startup.sh
5.添加需要的jar 到 solr工程的lib下 /root/solr-4.10.3/example/lib/ext目录下的所有的jar包添加到solr工程中
6.创建solrhome 把/root/solr-4.10.3/example/solr文件夹复制一份作为solrhome。
7.告诉solr服务solrhome的位置。需要修改web.xml (solr工程里的)
8.重启tomcat 访问:http://192.168.139.128:8080/solr 出现下面的界面,就OK了。
测试solr:
搭建完成,下面就在文档中添加域测试一下。所有动作之后不要忘了提交。
@Test public void testSolrJ() throws Exception{ //创建连接 SolrServer solrServer =new HttpSolrServer("http://192.168.139.128:8080/solr"); //创建一个文档对象 SolrInputDocument document=new SolrInputDocument(); //添加域 //向文档中添加域 document.addField("id", "test001"); document.addField("item_title", "测试商品"); document.addField("item_sell_point", "卖点"); //把文档添加到索引库 solrServer.add(document); //提交 solrServer.commit(); }
总结:
搭建过程很简单,动手试试吧。
PS:中间在配置IKAnalyzer的时候需要编辑solrhome中的schema.xml,遇到一个编码问题,如果修改了xml保存格式一定要是utf-8,否则就会报“Schema Parsing Failed: 3 字节的 UTF-8 序列的字节 3 无效。”的错误。