solr1.4以后实现的智能提示,方便用户输入搜索
Suggest配置
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">string</str>
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">name</str>
<float name="threshold">0.0001</float>
<!--<str name="sourceLocation">suggest_dict.txt</str>-->
<!--<str name="spellcheckIndexDir">spellchecker</str>-->
<str name="comparatorClass">freq</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.count">8</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.collate">true</str>
<!--<str name="spellcheck.build">true</str> -->
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
说明:
1.solr的suggest基于solr.SpellCheckComponent
2.queryAnalyzerFieldType 参数为string,在这不要定义复杂分词,如果是根据某一个索引字段,意义不大
3.field字段名,表示基于schema中的某一个索引字段
4.threshold限制一些不常用的词出现,值越大过滤纸越多
5.sourceLocation用于设置字典,如果有一个字典能记录用户常搜索的字,那提示更更好
6.spellcheckIndexDir如果已经设置spellcheck,那么可以在此制定目录
7.字典格式如下
# This is a sample dictionary file.
acquire
accidentally\t2.0
accommodate\t3.0
文本格式utf-8,#开头表示注释,被忽略
每一个词一行,后面带权重
8.配置词典后在requestHandler中设置spellcheck.onlyMorePopular为true,可以根据权重排序
9.spellcheck.count返回行
配置完成重启服务后,设置参数suggest/?spellcheck.build=true来创建spellchecker的索引
然后输入:http://ip:port/corename/suggest?q=xxx进行搜索了
接下来就是前台js实现的问题了。
当然也可以通过solrj来进行搜索
CommonsHttpSolrServer server = new CommonsHttpSolrServer(
"http://ip:port/corename/");
SolrQuery params = new SolrQuery();
String token = "牛";
params.set("qt", "/suggest");
params.set("q", token);
params.set("spellcheck.build", "true");
QueryResponse response = null;
try {
response = server.query(params);
System.out.println("查询耗时:" + response.getQTime());
} catch (SolrServerException e) {
System.err.println(e.getMessage());
e.printStackTrace();
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
} finally {
}
SpellCheckResponse spellCheckResponse = response
.getSpellCheckResponse();
if (spellCheckResponse != null) {
List<Suggestion> suggestionList = spellCheckResponse
.getSuggestions();
for (Suggestion suggestion : suggestionList) {
System.out.println("Suggestions NumFound: "
+ suggestion.getNumFound());
System.out.println("Token: " + suggestion.getToken());
System.out.print("Suggested: ");
List<String> suggestedWordList = suggestion.getAlternatives();
for (String word : suggestedWordList) {
System.out.println(word + ", ");
}
System.out.println();
}
}
这样就可以。
对于Suggest,个人的想法,字典是一种好的方式,但是增加字典比较麻烦,还有可以独立一个字段,对该字段做一些特殊的分词,比如像商品搜索类,整个标题可以是一个词,中文,数字,英文,符号等间隔的分开,这个具体还是看应用了。
现在我在诚交网易货商品搜索上用的是字段的方式,新建一个单独的排序字段,然后把需要提示的字段拷贝过来,效果还算可以,大家看下图或去诚交网体验一下。
- 大小: 53.3 KB
分享到:
相关推荐
资源名称:相关性搜索 利用Solr与Elasticsearch创建智能应用内容简介:《相关性搜索:利用Solr与Elasticsearch创建智能应用》揭开了相关性搜索的神秘面纱,告诉大家如何将 Elasticsearch与 Solr这样的搜索引擎作为可...
solr搜索引擎,solr介绍什么是solr搜索引擎,操作实例
ES和solr都是基于Lucence的搜索框架,文档比较2中方案适合的不同场景和优劣
solr-smart-建议您需要将以下 jar 文件包含到类路径中以编译 solr-smart-suggest 组件: lucene-core-4.10.3-SNAPSHOT.jar lucene-analyzers-common-4.10.3-SNAPSHOT.jar lucene-suggest-4.10.3-SNAPSHOT.jar solr-...
类似京东,淘宝搜索自动补全功能。通过suggest.js插件来完成功能开发。
Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。
solr搜索服务器安装配置--资料备份
本书揭开了相关性搜索的神秘面纱,告诉大家如何将Elasticsearch 或Solr 这样的搜索引擎作为可编程的相关性框架,从而表达业务排名规则。从这本书中你可学会如何结合各种外部数据源、分类方法以及文本分析手段对...
1.学员操作手册-Solr搜索自动补全 2.solr实训教程.doc 3.积分商城基于Solr的搜索引擎优化.pdf 4.基于Solr的搜索引擎优化讲义.pdf 5.课程大纲-基于搜索引擎培训.doc 6.学员操作手册-Solr数据库插入索引.doc 7.学员...
solr搜索引擎支持分页 有问题可以QQ(271287607)
ik,suggest 已经配置好了,可以在Windows/linux直接启动
sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...
apache solr搜索系统的.Net实现
NULL 博文链接:https://ldcsunnyboy.iteye.com/blog/1113251
solr搜索引擎最新安装包。solr是比较常用的企业级搜索引擎。
介绍了Solr5.5内部使用的分词原理,有助于开发者自定义自己的分词器时掌握分词的基础知识。
solr配置搜索引擎平台 一、 SOLR搭建企业搜索平台 二.... 三,,,,
Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。它是基于lucene搜索引擎的服务,你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且...
tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。