智能提示(一) Solr (suggest)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了智能提示(一) Solr (suggest),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2791字,纯文字阅读大概需要4分钟。
内容图文
电商搜索中要实现这么一块功能,当输入文字时候。下拉框提示。类似于百度搜索
在师出名门的基于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服务。运行solrjclient代码
/** * @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; }
前端简单效果图:
原文:http://www.cnblogs.com/jhcelue/p/6805552.html
内容总结
以上是互联网集市为您收集整理的智能提示(一) Solr (suggest)全部内容,希望文章能够帮你解决智能提示(一) Solr (suggest)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。