solr的suggest模块

solr有个suggest模块,用来实现下拉提醒功能,就是输入了一个文本之后,进行文本建议查找的功能。

suggest请求的url

http://localhost:8983/solr/hotquestions/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=elec

这里可以看到有几个参数:

suggest=true

这个参数必须为true,表示我这次请求是suggest请求。

suggest.q

进行查询建议的文本

suggest.dictionary

搜索组建中词典的名字,这个参数必须填写,你可以在请求体中带上这个参数,也可以在请求参数中带上。

suggest.count

suggest请求返回的suggest数。

suggest.cfg

这个不是必填的,如果suggester支持,用于内容过滤。

suggest.build

如果设置为true,这个请求会导致重建suggest索引。

这个字段一般用于初始化的操作中,在线上环境,一般不会每个请求都重建索引,如果线上你希望保持字典最新,最好使用buildOnCommit或者buildOnOptimize来操作。

suggest.reload

如果设置为true,会重新加载suggest索引。

suggest.buildAll

如果设置为true,会重建所有suggest索引。

suggest.reloadAll

如果设置为true,会重新加载所有suggest索引。

suggest模块的配置

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">cat</str>
<str name="weightField">price</str>
<str name="suggestAnalyzerFieldType">string</str>
</lst>
</searchComponent>

name

suggester的名字,如果设置多个,可以在请求中指定。

lookupImpl

查找方式的具体实现,有几种方式:

  • AnalyzingLookupFactory: 这个查询方式先对查询的输入文本进行分析,构建出一个FST树,然后再进行查询。
  • FuzzyLookupFactory: 这个查询方式是AnalyzingLookupFactory的扩展,只不过是一种模糊匹配。
  • AnalyzingInfixLookupFactory: 这个查询方式对输入的文本进行分析,然后建议出前缀匹配的索引文本。
  • BlendedInfixLookupFactory: 这个查询方式是AnalyzingInfixSuggester的扩展,这个查询方式可以为分析后的文本设置一些权重,你可以设置权重正序或逆序。
  • FSTLookupFactory: 基于自动机的查询。这个方式构建比较慢,但是使用内存更少。除非你需要更复杂的结果,否则就不需要使用这种方式。
  • TSTLookupFactory: 一个简单的,基于trie树的查找。
  • WFSTLookupFactory:
  • JaspellLookupFactory:

dictionaryImpl

字典的具体实现,具体有几种方式:

  • DocumentDictionaryFactory: 一个基于词语,权重,和一个有效的索引中的负荷。
  • DocumentExpressionDictionaryFactory: 和DocumentDictionaryFactory一样,但是允许用户设置复杂的"weightExpression"标签来设置权重
  • HighFrequencyDictionaryFactory: 允许增加一个阀值来修改返回结果
  • FileDictionaryFactory: 允许使用一个外部的文件来包含建议的结果。权重也是可以在外部文件中有所加载的。
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

suggest的handler,主要设置了建议返回的默认个数,默认使用的suggest组件等。

参考文章

官方文档

solr的suggest模块的更多相关文章

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

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

  2. solr suggest智能提示配置

    目录 配置文件 Java代码 遇到的问题 回到顶部 配置文件 solrconfig.xml <searchComponent name="suggest" class=&qu ...

  3. Solr Suggest组件的使用

    使用suggest的原因,最主要就是相比于search速度快,In general, we need the autosuggest feature to satisfy two main requi ...

  4. Solr 6.7学习笔记(04)-- Suggest

    当我们使用baidu或者Google时,你输入很少的字符,就会自动跳出来一些建议选项,在Solr里,我们称之为Suggest,在solrconfig.xml里做一些简单的配置,即可实现这一功能.配置如 ...

  5. Solr调研总结

    http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...

  6. solr教程,值得刚接触搜索开发人员一看

    http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍sol ...

  7. Solr总结

    http://www.cnblogs.com/guozk/p/3498831.html Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注 ...

  8. 【转载】solr教程,值得刚接触搜索开发人员一看

    转载:http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍 ...

  9. Solr+Tomcat+zookeeper部署实战

    一 .安装solr 环境说明:centos 7.3,solr 6.6,zookeeper3.4,Tomcat8.5,jdk1.8 zookeeper的部署请参考:http://www.cnblogs. ...

随机推荐

  1. 《JAVA与模式》之抽象工厂模式

    场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU.硬盘.内存.主板.电源.机箱等.为讨论使用简单点,只考虑选择CPU和主板的问题. 事实上,在选择 ...

  2. 算法:Astar寻路算法改进

    早前写了一篇<RCP:gef智能寻路算法(A star)> 出现了一点问题. 在AStar算法中,默认寻路起点和终点都是N x N的方格,但如果用在路由上,就会出现问题. 如果,需要连线的 ...

  3. Java多线程9:ThreadLocal源码剖析

    ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value).get().remove().先剖析源码清楚地知道ThreadLocal是 ...

  4. 在WebApi中基于Owin OAuth使用授权发放Token

    如何基于Microsoft.Owin.Security.OAuth,使用Client Credentials Grant授权方式给客户端发放access token? Client Credentia ...

  5. statcounter统计的浏览器市场占有率

      Source: StatCounter Global Stats - Browser Market Share

  6. ASP.NET集成模式下的管道事件

  7. Redis中统计各种数据大小的方法

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/125.html?1455853369如果 MySQL 数据库比较大的话,我 ...

  8. lua以xpcall实现try/catch功能

    -- 打印错误信息 local function __TRACKBACK__(errmsg) ); print("-------------------------------------- ...

  9. 合法提交Html标签 Page指令

    3.2.1 提交合法的HTML标签(1) 有时候我们需要让我们提交的文本展示出来的效果非常美观,通常会对服务器提交一些HTML标签来控制文本或内容的样式. HTML标签可能包含了很多不安全的因素,所以 ...

  10. DOM (Document Object Model)文档对象模型

    [理解下DOM] DOM——Document Object Mode.DOM是网页上XHTML中文档正文标题啊.段落.列表.样式.以及ID/class等所有其他数据的一个内部表示.我自己的理解是将网页 ...