目录

配置文件

  • 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"></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", "");//返回数量 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..

solr suggest智能提示配置的更多相关文章

  1. python智能提示配置

    Package Control 安装方法 1.通过快捷键 ctrl+` 或者 View > Show Console 打开控制台,然后粘贴相应的 Python 安装代码: 2.Sublime T ...

  2. Solr6 Suggest(智能提示)

    1.介绍 Solr从1.4开始便提供了检查建议,检索建议目前是各大搜索的标配应用,主要作用是避免用户输入错误的搜索词,同时将用户引导到相应的关键词搜索上.通常,我们将其称为搜索联想. 其效果如图所示. ...

  3. 图解 eclicpse 智能提示 配置

    输入的内容: “.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ” 第一步:   第二步:

  4. 搜索引擎keyword智能提示的一种实现

    问题背景 搜索关键字智能提示是一个搜索应用的标配.主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验. 美团CRM系统中存在数以百万计的商家,为了让用户高速查找到目标 ...

  5. 智能提示(一) Solr (suggest)

    电商搜索中要实现这么一块功能,当输入文字时候.下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能.   拼写检查就是用来检查用户输入的检索 ...

  6. Eclipse配置详解(包括智能提示设置、智能提示插件修改,修改空格自动上屏、JDK配置、各种快捷键列表……)

    Eclipse编辑器基本设置 1.添加行号 在边缘处右键 2.改字体 字体的一般配置 3.去掉拼写错误检查 4.Java代码风格 代码格式化 Ctrl + Shift + F 之后点击右边的New按钮 ...

  7. vi代码智能提示功能及相关配置

    vim是一款支持插件.功能无比强大的编辑器,无论你的系统是linux.unix.mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding.如果能把vim用好了,不仅编程效率能得 ...

  8. 【vim】插件管理及代码智能提示与补全环境的配置

    1. 引言 可以使用脚本/插件来给vim添加各种神奇的功能,从更换颜色主题.到代码智能提示,甚至项目管理.无数开发者通过开源社区贡献自己开发的插件,使得vim有可能变得无比强大.这儿http://vi ...

  9. vscode配置python之settings.json 智能提示

    vscode编写Python的智能提示,搞了好久,参考了各种网上配置,如下,备份方便自己查找. { "workbench.iconTheme": "material-ic ...

随机推荐

  1. netty3升netty4一失眼成千古恨

    老项目是netty3的,本来想直接改到netty5,但是netty5居然是只支持jdk1.7,很奇怪jdk1.6和jdk1.8都不行..为了兼容jdk1.6加上netty4本来和netty5就差别不大 ...

  2. FineReport中如何进行Informix数据库连接

    报表开发工具Finereport中,对于Informix数据库,定义数据连接处进行如下配置: 数据库:Others 驱动器:com.informix.jdbc.IfxDriver URL: jdbc: ...

  3. 苹果iOS强制HTTPS迫在眉睫,距离2017年只剩1天,准备好了么?

    其实不久前苹果就发了通告,要求ios上的应用全部以HTTPS来进行接口调用以及数据访问,这样做是为了数据安全,一方面为了自己,另一方面也是对应用的要求更加严格,这么做很好,也加强了市场app的规范,虽 ...

  4. ubuntu 14.04 以root权限启动chrome

    chrome版本 51.0.2704.103 How to run google chrome as root in linux - Unix & Linux Stack Exchange提示 ...

  5. 关于ES6新增的东西

    查询浏览器对ES6的支持情况https://kangax.github.io/compat-table/es6/ Chrome.MS Edge.Firefox.Safari.Node和其它很多环境都已 ...

  6. WP-Cumulus插件

    链接: 5KB搞定wp-cumulus中文3D Tag问题 WordPress plugin: WP-Cumulus Flash based tag cloud WP-Cumulus支持的3D标签云实 ...

  7. PyQt4入门

    PyQt4入门教程(6)_对话框 文中译者的话将用方括号[]标出.对话框(Dialogs)是现代GUI程序中不可缺少的一部分.对话本来指的是两个或者更多人之间的交流,而在计算机应用中,对话是一个可以让 ...

  8. JS组件系列——Bootstrap 树控件使用经验分享

    前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项.不管怎么样,树控件都是很多项目里面不可或缺的组件之一.今天, ...

  9. 第一个Android应用--签证无忧 上线

    用了大概1个多星期的时间,把一个简单的应用完成,[签证无忧]是基于在我所在公司办理签证的前提下,为方便客户查询进度所开发,后来我加了淘宝的购买链接,这样客人在以后需要时不需要到淘宝查找了. 签证无忧这 ...

  10. C#字符串操作 取文本左边 取文本右边 取文本中间 取文本中间到List集合 指定文本倒序

    /// <summary> /// 取文本左边内容 /// </summary> /// <param name="str">文本</pa ...