solr入门之搜索建议配置和代码Demo
2016-03-21 19:03
204 查看
检索建议检索建议目前是各大搜索的标配应用,主要作用是避免用户输入错误的搜索词,同时将用户引导到相应的关键词搜索上。Solr内置了检索建议功能,它在 Solr里叫做Suggest模块.该模块可选择基于提示词文本做检索建议,还支持通过针对索引的某个字段建立索引词库做检索建议。在诸多文档中都推荐使 用基于索引来做检索建议,因此我们目前的实现也是采取该方案。现在我们开始配置Suggest模块,首先在solrconfig.xml文件中配置Suggest依赖的SpellChecker模块,然后再配置Suggest模块,所以这两个都需要配置。
public static void getSuggest(String suggest) throws SolrServerException, Exception{ HttpSolrClient solrClient = new HttpSolrClient("http://localhost:8983/solr/group"); SolrQuery solrQuery = new SolrQuery(); solrQuery.set("qt", "/suggest"); solrQuery.set("q", "衣"); solrQuery.set("spellcheck.count", "10"); QueryResponse response = solrClient.query(solrQuery); SpellCheckResponse checkResponse = response.getSpellCheckResponse(); ArrayList<String> spellwords = new ArrayList<String>(); if(checkResponse!=null){ List<Suggestion> suggestions = checkResponse.getSuggestions(); for (Suggestion s : suggestions) { List<String> list = s.getAlternatives(); for (String spellword : list) { System.out.println(spellword); spellwords.add(spellword); } } } System.out.println(spellwords); String firstSuggestion = checkResponse.getFirstSuggestion("衣"); System.out.println(firstSuggestion); } 通过threshold参数来限制一些不常用的词不出现在智能提示列表中,当这个值设置过大时,可能导致结果太少,需要引起注意。目前主要存在的问题是使 用freq排序算法,返回的结果完全基于索引中字符的出现次数,没有兼顾用户搜索词语的频率,因此无法将一些热门词排在更靠前的位置。这块可定制 SuggestWordScoreComparator来实现,目前还没有着手做这件事情。 关于搜索建议的 一点总结: 搜索建议中配置的字段就为搜索建议的文档域这个字段要配置好,因为只能从这一个字段中获取建议---设置复合字段 搜索建议的分词器也是个问题,建议的结果和选用的 分词方法息息相关 这个也是 注意点 还有一个如果选中的建议字段是没有创建索引的话 那么该字段的建议也是 无效的 | |||
附加拼写检查功能拼写检查(网上资料未实践)首先配置 solrconfig.xml,文件可能已经有这两个元素(如果没有添加即可),需要根据我们自己的系统环境做些适当的修改。
|
相关文章推荐
- Hello,Qt5
- 3.python算法之完全数
- DICOM图像格式
- Java内存管理与垃圾回收
- python的with语句理解
- myeclipse 自定义xml模板,供新建xml文件时自动导入 (转)
- 在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)支持。
- Spring3第二天
- thrift的TTransport连接池注意事项[Java版本说明]
- Spring MVC返回对象JSON
- PHP/JS/MYSQL 测试题
- Java泛型简明教程
- windows下的python扩展包下载地址
- 5-24 约分最简分式 (15分) c语言版
- Java第二次作业
- Java虚拟机类加载机制
- 如何求二进制表示中“1”的个数
- 给eclipse 安装spring ide插件
- c++11 学习及测试(auto,decltype,range for...)
- python yield协程