Apache solr使用
? ? ? ? ? ?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" useSmart="false" />
</analyzer>
<analyzer type="query">
<tokenizer
useSmart="false" />
</analyzer>
</fieldType>
然后再你需要分词的字段使用此类型
<field name="content" type="text_zh" indexed="true" stored="true" />