Apache Solr是由apache公司开发的一款开源的企业级搜索服务器,采用易于扩展和修改的java语言开发而来,为了方便大家使用,小编带来了配置教程和使用教程,需要的朋友不要错过哦,欢迎到欧普软件园下载!
Apache Solr基本简介
Apache Solr (读音: SOLer) 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:id进行描述。
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
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端口所在的那一行修改如下:
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
增加了URIEncoding="UTF-8"这一配置。
在tomcat的conf目录下,增加 Catalina\localhost\solr.xml 文件,如果conf文件夹下没有Catalina,新建它。
solr.xml内容:
第四步:启动Tomcat。输入http://localhost:8080/solr/ 出现欢迎界面,表示成功。
Apache 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("");// 标记,高亮关键字前缀
query.setHighlightSimplePost("");// 后缀
query.setHighlightSnippets(3);// 结果分片数,默认为1
query.setHighlightFragsize(70);// 每个分片的最大长度,默认为100
加入中文分词
修改solr\conf\schema.xml文件,在文件中加入如下字段类型,
positionIncrementGap="100">
class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />
class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />
然后再你需要分词的字段使用此类型
Apache Solr的query语法
根据不同的需要进行选择。
/**
* query语法
* 查询语法 http://lucene.apache.org/core/3_6_0/queryparsersyntax.html
* 1) title:”The Right Way” AND text:go // 标题的值匹配,AND text:go 表示对title默认的值为go的项进行筛选,但不是必须的
* 2) mod_date:[20020101 TO 20030101] //mod_date日期在20020101与20030101之间的
* 3) title:{Aida TO Carmen} // 标题在Aida 与Carmen之间的集合,但不包括Aida Carmen
* 4) content:”jakarta apache” AND “Apache Lucene” // 搜索的字段必须包含 jakarta apache与Apache Lucene;可以使用&&代替AND
* 5) content:+jakarta lucene // 必须包含jakarta 或可能包含lucene
* 6) content:”jakarta apache” jakarta // 结果中包含jakarta apache或jakarta ;或使用content:”jakarta apache” OR jakarta。可以使用||代替OR
* 7) content:”jakarta apache” NOT “Apache Lucene” // 包含jakarta apache,但不包含Apache Lucene;可以使用! 代替NOT
* 8) content:”jakarta apache” -“Apache Lucene” // 包含jakarta apache,但不包括Apache Lucene;与NOT区别还没明白
* 9) content:(jakarta OR apache) AND website // 使用括号实现子查询,包含jakarta OR apache以及website
* 10) title:(+return +”pink panther”) // 使用括号将多个子句合并为一个字段,标题中必须包含单词return以及短语”pink panther”
* 11) title:tes? // 使用? * 来实现内容的搜索
* 12) 支持转移字符的查询,需转移字符包括+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \ 可以使用\来转义字符,如title:\(1\+1\)\:2
* 13) title:roam~ // ~表示模糊查询,romam~将查找到foam或roams得单词;roam~0.8表示将得到roam 80%的相似度单词
* 14) content:”jakarta apache”~10 // 临近搜索,检索相隔10个单词的”apache”和”jakarta”
*/
更新日志
该版本包含自 6.4.0 版本以来的5个 bug 修复:
用户界面的“插件/统计信息”部分不显示空的指标类型
SOLR_SSL_OPTS 在 solr.cmd 中被错误覆盖
更好地验证 ReplicationHandler 中的文件名参数
由于度量标准更改,Admin UI 无法找到 DataImport 处理程序 AnalyzingInfixSuggester
核心交换不适用于新的指标更改