智能提示(一) Solr (suggest)
来源:互联网 发布:苹果删除数据恢复 编辑:程序博客网 时间:2024/06/04 20:12
电商搜索中要实现这么一块功能,当输入文字时候,下拉框提示。类似于百度搜索
在师出名门的基于lucene的solr搜索引擎中。提供了 拼写检查和智能提示这块功能。
拼写检查就是用来检查用户输入的检索内容是否存在,如果不存在则,给它提示出相近,或相似的内容。
而检索建议则是用户输入某个检索条件后,会立刻友好的给出一系列提示内容,并推荐首个出现的相似的词,作为推荐词。
也就是说 拼写检查是可以作为一个单独功能使用,但suggest一般引用拼写检查组件
实现过程,配置solrconfig.xml
<searchComponent name="suggest" class="solr.SpellCheckComponent"> <!-- <str name="queryAnalyzerFieldType">text_general</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">article</str> <float name="threshold">0.0001</float> <!-- 使用自定义suggest词库词可以将如下两行的注释取消 <str name="sourceLocation">suggest.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="solr.SearchHandler"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggest</str> <str name="spellcheck.count">11</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>
重启solr服务。执行solrj客户端代码
/** * @method: spellcheck * @Description: 智能提示 Solr里叫做Suggest模块 */public static List<Map<String, String>> suggest(String word,String corename) {SolrServer server=Indexer.getHttpSolrServer(corename);List<Map<String, String>> wordList = new ArrayList<Map<String, String>>();try {SolrQuery query = new SolrQuery();query.set("q", word);// 查询的词query.set("qt", "/suggest");// 请求到suggest中//query.set("spellcheck.count", "");// 返回数量QueryResponse rsp = server.query(query);// 上面取结果的代码SpellCheckResponse re = rsp.getSpellCheckResponse();// 获取拼写检查的结果集if (re != null) {for (Suggestion s : re.getSuggestions()) {List<String> list = s.getAlternatives();// 获取所有 的检索词for (String spellWord : list) {Map<String, String> map = new HashMap<String, String>();map.put("code", spellWord);wordList.add(map);}}//String t = re.getFirstSuggestion(word);// 获取第一个推荐词}} catch (Exception e) {e.printStackTrace();}return wordList;}
前端简单效果图:
0 0
- 智能提示(一) Solr (suggest)
- solr智能提示 suggest(基于提示词文本做智能提示)
- solr搜索智能提示Suggest
- Solr Suggest搜索智能提示
- solr智能提示 suggest(针对索引的某个字段建立索引词库做智能提示)
- Solr Suggest实现搜索智能提示
- Solr Suggest实现搜索智能提示
- Solr Suggest实现搜索智能提示
- Solr Suggest智能提示配置说明
- Solr Suggest实现搜索智能提示
- nutch+solr 实现suggest智能提示,前台采用jQuery
- 智能提示(二)solr词频统计(TermsComponent)
- Solr智能提示autosuggest
- solr suggest
- 输入框智能提示(一)
- java通过Solr的Suggest实现提示词
- solr-利用suggest添加Solr中自动提示功能的简介
- 启用 solr suggest
- MongoDB集群
- 控件没有显示的原因
- UserJFrame
- SQL SERVER 2005/2008 中关于架构的理解(一)
- Old结算流程
- 智能提示(一) Solr (suggest)
- HashMap实现原理
- UIScrollView无法滚动
- 2012年5月SAT香港真题解析
- mysql replace into用法详细说明
- OC移植 swfit——Unknown type name 'NSData'
- Libevent源码分析-----多线程、锁、条件变量(一)如evthread_use_windows_threads
- 聊聊移动平台的跨平台开发
- python 非贪婪多匹配,注意使用findall