Apache solr使用

1、Solr介绍 java

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

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

2、Solr配置 服务器

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

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

第二步:修改conf\server.xml,把8080端口所在的那一行修改以下: 工具

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

           connectionTimeout="20000"   debug

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

增长了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/ 出现欢迎界面,表示成功。

3、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" />

相关文章
相关标签/搜索