智能提示(一) Solr (suggest)

电商搜索中要实现这么一块功能,当输入文字时候。下拉框提示。类似于百度搜索

在师出名门的基于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;
	}

前端简单效果图:

时间: 2025-01-05 17:16:10

智能提示(一) Solr (suggest)的相关文章

Solr 智能提示(suggest)

电商搜索中要实现这么一块功能,当输入文字时候,下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能.   拼写检查就是用来检查用户输入的检索内容是否存在,如果不存在则,给它提示出相近,或相似的内容.   而检索建议则是用户输入某个检索条件后,会立刻友好的给出一系列提示内容,并推荐首个出现的相似的词,作为推荐词. 也就是说 拼写检查是可以作为一个单独功能使用,但suggest一般引用拼写检查组件 实现过程,配置solrconfig.xml

搜索引擎关键字智能提示的一种实现

问题背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验. 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于solrcloud实现了商家搜索模块.用户在查找商家时主要输入商户名.商户地址进行搜索,为了提升用户的搜索体验和输入效率,本文实现了一种基于solr前缀匹配查询关键字智能提示(Suggestion)实现. 需求分析 支持前缀匹配原则 在搜索框中输入"海底",搜索框下面会以海底

美团搜索-搜索引擎关键字智能提示的一种实现[转]

http://tech.meituan.com/pinyin-suggest.html --------------------------------------------------------------------- 快照: 问题背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验. 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于solrcloud实现了商家搜索模块.用户在查找商

jquery php 百度搜索框智能提示效果

这个程序是利用php+ajax+jquery 实现的一个仿baidu智能提示的效果,有需要的朋友可以下载测试哦. 代码如下 index.html文件,保保存成index.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&qu

elasticsearch Suggester实现智能提示(八)

Completion Suggester 智能提示 { "settings": { }, "mappings": { "doc": { "properties": { "productName": { "type" : "text", "analyzer":"ik_max_word" }, "productNameSu

10 行 Python 代码实现模糊查询/智能提示

10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P) Sublime Text (Cmd-P) '模糊匹配'这是一个极为有用的特性,同时也非常易于实现. 2.问题分析: 我们有一堆字符串(文件名)集合,我们根据用户的输入不断进行过滤,用户的输入可能是字符串的一部分.我们就以下面的

如何让vue文件中的代码在Sublime Text 3中高亮和智能提示

大家写在Sublime Text 3中编写vue文件时,会发现没有代码智能提示,清一色的黑底白字,不会像html.js一样变成彩色,给我们带来了很大的不便.所以需要安装一款叫作Vue Syntax Highlight的插件,它不仅可以使代码高亮起来,还能进行代码智能提示.那怎样安装呢?分为以下几步: 安装Package Control 执行Install Package 安装Vue Syntax Highlight

Visual Studio 2013 智能提示

Visual Studio 2013中,智能提示功能突然用不了,查了一下,使用命令行重置VS的方法解决了这个问题.步骤如下: 开始菜单 -->所有程序-->Visual Studio 2013文件夹 --> Visual Studio Tools --> Developer Command Prompt for VS2013 输入DOS命令: CD Common7/IDE 进入到该工具下的子文件夹中 输入:devenv.exe /resetsettings ,重置Visual St

Eclipse设置智能提示

1.java智能提示 (1). 打开Eclipse,选择打开" Window - Preferences". (2). 在目录树上选择"Java-Editor-Content Assist",在右侧的"Auto-Activation"找到"Auto Activation triggers for java"选项.默认触发代码提示的就是"."这个符号. (3). 在"Auto Activation