Solr4.3之检索建议suggest

原文链接:http://www.656463.com/article/Efm26v.htm

很多才学solr的人,都容易把solr spellcheck和solr suggest混淆,误以为他们是一样的,其实不然,他们的侧重点是不一样的,拼写检查spellcheck就是用来检查用户输入的检索内容是否存在,如果不存在,则给用户提示相近,或相似的东西,而检索建议则是用户输入某个检索条件后,会立即友好的给出一系列提示内容,并推荐首个出现的相似的词,作为推荐词。如果这个条件相关的东西一个都没有,则不会提示,所以某种意义上来说,可以在用户输入检索条件时使用suggest,而在点击完搜索时,使用拼写检查,二者结合会给用户带来比较好的用户体验。

检索建议(suggest)是依附于拼写检查组件实现的功能,所以呢spellcheck这个组件很重要,拼写检查可以作为一个功能,单独使用,但是suggest功能就不可以,必须的在拼写检查组件存在的时候可以用,否则再启动tomcat时,会报一个未知的SpellCheck组件异常。

下面进入正题,suggest的配置相对简单,主要也是有两种形式,第一种只能用主索引库里面存在的建议词,作为提示。第二种使用自定义的建议词库作为建议词,自定义的建议词文本,放在跟solrconfig.xml同一级目录下即可


F:\tomcat\webapps\solr\solr_home\collections\collection1\conf\suggest.txt

下面给出suggest在solrconfig.xml里配置的代码:

  1. <searchComponent name="suggest" class="solr.SpellCheckComponent">
  2. <str name="queryAnalyzerFieldType">string</str>
  3. <lst name="spellchecker">
  4. <str name="name">suggest</str>
  5. <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
  6. <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
  7. <str name="field">my_word</str>
  8. <float name="threshold">0.0001</float>
  9. <!-- 使用自定义suggest词库词可以将如下两行的注释取消
  10. <str name="sourceLocation">suggest.txt</str>
  11. <str name="spellcheckIndexDir">spellchecker</str>
  12. -->
  13. <str name="comparatorClass">freq</str>
  14. <str name="buildOnOptimize">true</str>
  15. <str name="buildOnCommit">true</str>
  16. </lst>
  17. </searchComponent>
  18. <requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
  19. <lst name="defaults">
  20. <str name="spellcheck">true</str>
  21. <str name="spellcheck.dictionary">suggest</str>
  22. <str name="spellcheck.count">10</str>
  23. <str name="spellcheck.onlyMorePopular">true</str>
  24. <str name="spellcheck.extendedResults">false</str>
  25. <str name="spellcheck.collate">true</str>
  26. <!--<str name="spellcheck.build">true</str> -->
  27. </lst>
  28. <arr name="components">
  29. <str>suggest</str>
  30. </arr>
  31. </requestHandler>

至此,我们就可以启动solr服务,在UI页面使用/suggest请求,进行测试,下面给出solrj的代码

  1. public List<String> suggest(String word)throws Exception{
  2. List<String>  wordList=new ArrayList<String>();
  3. SolrQuery query = new SolrQuery();
  4. query.set("q", "my_word:"+word);//查询的词
  5. query.set("qt", "/suggest");//请求到suggest中
  6. query.set("spellcheck.count", "10");//返回数量
  7. QueryResponse   rsp = server.query(query);
  8. //  System.out.println("直接命中:"+rsp.getResults().size());
  9. //…上面取结果的代码
  10. SpellCheckResponse re=rsp.getSpellCheckResponse();//获取拼写检查的结果集
  11. if (re != null) {
  12. for(Suggestion s:re.getSuggestions()){
  13. List<String> list=s.getAlternatives();//获取所有 的检索词
  14. for(String spellWord:list){
  15. System.out.println(spellWord);
  16. wordList.add(spellWord);
  17. }
  18. return wordList;//建议词汇
  19. }
  20. // List<Collation> list=re.getCollatedResults();//
  21. String t=re.getFirstSuggestion(word);//获取第一个推荐词
  22. System.out.println("推荐词:"+t);
  23. //       for(Collation c:list){
  24. //
  25. //           System.out.println("推荐词:"+c.getCollationQueryString());
  26. //       }
  27. }
  28. return null;
  29. }

最后,我们就在 WEB项目中,使用ajax+suggest+keyup事件,就可以实现类似百度输入框的功能了

时间: 2024-10-07 11:21:13

Solr4.3之检索建议suggest的相关文章

Solr 智能提示(suggest)

电商搜索中要实现这么一块功能,当输入文字时候,下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能.   拼写检查就是用来检查用户输入的检索内容是否存在,如果不存在则,给它提示出相近,或相似的内容.   而检索建议则是用户输入某个检索条件后,会立刻友好的给出一系列提示内容,并推荐首个出现的相似的词,作为推荐词. 也就是说 拼写检查是可以作为一个单独功能使用,但suggest一般引用拼写检查组件 实现过程,配置solrconfig.xml

智能提示(一) Solr (suggest)

电商搜索中要实现这么一块功能,当输入文字时候.下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能.   拼写检查就是用来检查用户输入的检索内容是否存在,假设不存在则,给它提示出相近,或相似的内容.   而检索建议则是用户输入某个检索条件后.会立马友好的给出一系列提示内容,并推荐首个出现的相似的词,作为推荐词. 也就是说 拼写检查是能够作为一个单独功能使用,但suggest一般引用拼写检查组件 实现过程.配置solrconfig.xml

solr入门教程

Solr 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式).它易于安装和配置,而且附带了一个基于HT

Solr调研总结(转)

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试.两个核心配置文件介绍.中文分词器配置.维护索引.查询索引,高亮显示.拼写检查.搜索建议.分组统计.自动聚类.相似匹配.拼音检索等功能的使用方法. 在代码文本框中如有显示不全的,请在文本框中按Ctrl+A再复制. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04 1. Solr 是什么? Solr它是一种开放源码的.基于 Luce

solr教程,值得刚接触搜索开发人员一看

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04       1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr

solr入门教程-较详细

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04       1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr

英语 - 语法

考点:动词时态 △△△△△ 谓语动词 = 助动词 + 实义动词 I will go to Beijing           时态 W has come.            时态 R was not convinced.       被动 I must work hard.           情态 Does he like English?       疑问 He doesn’t eat the chicken.    否定 I love you.     =   do love He l

bootstrap suggest搜索建议插件

近日因工作需要看了下此插件. 首先下载bootstrap js包.添加此插件的引用.注意css样式要引用,不能忘记. 前台页面代码,因为楼主做的是选项卡切换查询不同的结果. <tr> <th style="background: #fff;" width="30%">类型:</th> <td width="70%"> <select class="selectpicker show-

基于Solr4.9.0的搜索系统

为什么需要搜索系统 随着商品数量的增长.以及复杂检索的需求,直接从数据库中检索信息,已经不能满足展示机搜索的需求. 比如: http://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C&enc=utf-8 http://www.yougou.com/sr/searchKey.sc?keyword=%E5%A5%B3%E9%9E%8B%E5%A4%A9%E7%BE%8E%E6%84%8F 这个时候就需要引入搜索系统. 搜索系统当前最常用的框架有:So