下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

一个开源的搜索服务器 Apache Solr的介绍与使用

作者:课课家教育     来源: http://www.kokojia.com点击数:951发布时间: 2016-01-25 14:54:08

标签: Apache搜索服务器开源软件

大神带你学编程,欢迎选课

  一、Solr介绍

  最近在一个项目中做了一个全文检索的功能,刚开始本来打算用Apache Lucene去实现,毕竟之前对Lucene有一点了解,但是在网上看技术类文章时看见了别人介绍Apache Solr,感觉挺好的,

  还是一个开源的搜索服务器,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的,高亮显示搜索结果,有自带的中文分词技术。

一个开源的搜索服务器 Apache Solr的介绍与使用_Apache_搜索服务器_开源软件_课课家

  二、Solr配置

  第一步:下载Solr, http://www.apache.org/dyn/closer.cgi/lucene/solr

  解压到我下载的是3.6.1版本,把它解压到E盘。E:/apache-solr-3.6.1

  第二步:修改conf\server.XML,把8080端口所在的那一行修改如下:

  <Connector port="8080" protocol="HTTP/1.1"

   connectionTimeout="20000"

   redirectPort="8443" URIEncoding="UTF-8"/>

  增加了URIEncoding="UTF-8"这一配置。

  第三步:配置solr

  在tomcat的conf目录下,增加 Catalina\localhost\solr.xml 文件,如果conf文件夹下没有Catalina,新建它。

  solr.xml内容:

  <Context docBase="E:/apache-solr-3.6.1/dist/apache-solr-3.6.1.war" debug="0" crossContext="true" >

  <Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.6.1/example/solr" override="true" /></Context>

  第四步:启动Tomcat。输入http://localhost:8080/solr/ 出现欢迎界面,表示成功。

  三、solr使用

  在调用Solr服务时使用了apache-solr-solrj-3.6.1.jar,Apache 已经为我们提供了 Solrj 这个工具,我们只需要简单的导入相关包,使用其简单的 API 就可以轻松对 solr 进行操作了

  建立与Solr服务的连接

  String url = "http://10.13.17.38:8983/solr";

   CommonsHttpSolrServer server = new CommonsHttpSolrServer(url);

   server.setSoTimeout(3000); // socket read timeout

   server.setConnectionTimeout(1000);

   server.setDefaultMaxConnectionsPerHost(1000);

   server.setMaxTotalConnections(10);

   server.setFollowRedirects(false); // defaults to false

   server.setAllowCompression(true);

   server.setMaxRetries(1);

  搜索条件的设置

  SolrQuery query = new SolrQuery();

  query.setQuery("tags:t5 AND t7");

   query.addField("auction_id");

   query.setStart(0);

   query.setRows(4);

   query.addSortField("auction_id", SolrQuery.ORDER.desc);

   query.addSortField("auction_point", SolrQuery.ORDER.asc);

  // 设置高亮

  query.setHighlight(true); // 开启高亮组件

  query.addHighlightField("content");// 高亮字段

  query.addHighlightField("titleStr");// 高亮字段

  query.setHighlightSimplePre("<font color='red'>");// 标记,高亮关键字前缀

  query.setHighlightSimplePost("</font>");// 后缀

  query.setHighlightSnippets(3);// 结果分片数,默认为1

  query.setHighlightFragsize(70);// 每个分片的最大长度,默认为100

  加入中文分词

  修改solr\conf\schema.xml文件,在文件中加入如下字段类型,

  <fieldType name="text_zh" class="solr.TextField"

  positionIncrementGap="100">

  <analyzer type="index">

  <tokenizer

  class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />

  </analyzer>

  <analyzer type="query">

  <tokenizer

  class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />

  </analyzer>

  </fieldType>

  然后再你需要分词的字段使用此类型

  <field name="content" type="text_zh" indexed="true" stored="true" />

赞(13)
踩(3)
分享到:
华为认证网络工程师 HCIE直播课视频教程