solr的suggest模块

简介:

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组件等。

目录
相关文章
|
11月前
|
存储 消息中间件 关系型数据库
ElasticSearch Relation Design (ES关联查询)
ElasticSearch Relation Design (ES关联查询)
155 0
|
前端开发
Bootstrap Search Suggest 插件使用
Bootstrap Search Suggest 插件使用
90 0
ES自定义插件-elasticsearch-analysis-hanlp
ES自定义插件-elasticsearch-analysis-hanlp
ES自定义插件-elasticsearch-analysis-hanlp
|
自然语言处理 Java 索引
Lucene&&Solr——分析器(Analyzer)
Lucene&&Solr——分析器(Analyzer)
62 0
Lucene&&Solr——分析器(Analyzer)
|
自然语言处理 Java 关系型数据库
Elasticsearch Query DSL之全文检索(Full text queries)下篇
Elasticsearch Query DSL之全文检索(Full text queries)下篇
|
存储 自然语言处理 算法
Elasticsearch Query DSL之全文检索(Full text queries)上篇
Elasticsearch Query DSL之全文检索(Full text queries)上篇
Elasticsearch Query DSL之全文检索(Full text queries)上篇
|
算法 前端开发 数据建模
Solr&lucene 默认的spatial search性能总结
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。介绍地理搜索性能优化的一些经验。
138 0
|
Java 数据格式
Solr4.1 spatial solrj search demo
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。本文介绍solr的地理搜索Demo。
132 0
|
索引
Solr Deep paging 4.7 and 3.* 原理解析
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。本文Solr Deep paging 4.7 and 3.*的相关原理解析。deep paging 是通过保留上一次翻页的 docid 和 score 信息,在收集文档过滤时候,执行比较并pass 已经收集过的文档,使得收集器的size 有限,性能得到提升。 存在问题是 shard搜索过程,searcher改变了,内部id变了,影响结果的局部一致性。
146 0
|
SQL 机器学习/深度学习 自然语言处理
全面解剖 Solr query 到lucene query
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。围绕从顶之下,从粗到西的关系认识solr 查询流程和实现细节。最低下定位到queryparse的实现。整个过程围绕信息检索这一思路展开,而不是工程实现来看这个问题。目的从整体结构上认识查询这一块的抽象。这样有具体需求的时候,可以知晓参照按个query、从哪个点注入系统中比较省事,而无需侵入solr、lucene底层。
227 0
全面解剖 Solr query 到lucene query