solr suggest智能提示配置
2016-05-26 20:29
337 查看
目录
配置文件
Java代码
遇到的问题
回到顶部
schema.xml
我需要智能提示的字段为商品名,我没有在原来的基础上进行智能匹配词,又创建了一个类型为String的字段。
由于ik是分词,所以重新定义了一个。可以试试类型为IK分词的。看一下效果。
回到顶部
回到顶部
自己的理解:就是说,你现在的商品数量,占商品总数的百分比,低于你配置的百分比就不会被suggest检索,你配置的低一点,那么商品数量较少的那部分商品就会被你检索出来。
也就是上面配置文件中,提到的。 0.00001..
配置文件
Java代码
遇到的问题
回到顶部
配置文件
solrconfig.xml<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">hot_word</str> <!-- 设定需要智能提示词的字段名 --> <float name="threshold">0.00001</float> <!-- 设定频率:自我解释为:你现在的商品数量,占商品总数的百分比, 低于你配置的百分比就不会被suggest检索 你配置的低一点,那么商品数量较少的那部分商品就会被你检索出来--> <!-- 使用自定义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="org.apache.solr.handler.component.SearchHandler"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggest</str> <str name="spellcheck.count">15</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>
schema.xml
我需要智能提示的字段为商品名,我没有在原来的基础上进行智能匹配词,又创建了一个类型为String的字段。
由于ik是分词,所以重新定义了一个。可以试试类型为IK分词的。看一下效果。
<field name="hmp_name" type="text_ik" indexed="true" stored="true"/> <field name="hot_word" type="string" indexed="true" stored="true"/>
回到顶部
Java代码
@Override public JSONObject suggestHotWordList(String hotword) throws Exception { JSONObject msgJson = new JSONObject(); List<String> wordList=new ArrayList<String>(); SolrQuery query = new SolrQuery(); query.set("q", "hot_word:"+hotword);//查询的词 query.set("qt", "/suggest");//请求到suggest中 query.set("spellcheck.count", "100");//返回数量 QueryResponse queryResponse = solrServer.query(query); //获取拼写检查的结果集 SpellCheckResponse re=queryResponse.getSpellCheckResponse(); if (re != null) { for(Suggestion s : re.getSuggestions()) { List<String> list = s.getAlternatives();//获取所有 的检索词 for(String spellWord : list) { wordList.add(spellWord); } } } msgJson.put("numFound", wordList.size()); msgJson.put("hotwords", wordList); return msgJson; }
回到顶部
遇到的问题
遇到的问题:有的词可以匹配出来。有的词存在,确匹配不出来。那就是有可能是因为频率不够。自己的理解:就是说,你现在的商品数量,占商品总数的百分比,低于你配置的百分比就不会被suggest检索,你配置的低一点,那么商品数量较少的那部分商品就会被你检索出来。
也就是上面配置文件中,提到的。 0.00001..
相关文章推荐
- zookeeper的四种类型的节点
- Entity Framework4.0 (七) EF4的存储过程
- poll---socket客户/服务器端编程
- 蓝桥杯--基础练习--BASIC-3 字母图形
- android使用贝塞尔曲线自定义心形View
- 【Java学习笔记】异常处理
- 微信开发调试
- Mongoose - Embedded Web Server / Embedded Networking Library
- 类的特殊成员函数——构造函数
- unity总结1
- leetcode(198,213)House Robber(I,II)
- STAX解析
- MYSQL自动备份脚本
- Codeforces Round #328 div2
- 2016湖大校赛 L题 The Sequence likes Ladder
- 11. SpringMVC_CookieValue 注解
- mui中的一些弹窗
- 回看之前的自己
- 浏览器的重绘与重排
- #include<sys/types.h>头文件作用