【问题标题】:get solr autosuggest results for phrase获取短语的 solr 自动建议结果
【发布时间】:2015-05-06 02:36:07
【问题描述】:

我想使用 solr 为搜索字段创建自动建议下拉菜单,但在尝试获取短语建议时遇到了困难。当我搜索“dog t”时,我想得到一个包含诸如“dog Treat”、“dog trick”、“dog tags”等短语的结果集……但我得到了2个结果集,一个是“dog "(例如“dogs”“dog bone”“doggy”...)和另一个用于“t”(例如“tree”“time”...)

我的查询网址是:

http://localhost:8985/solr/mycollection/suggest?q=%22dog%20t%22&wt=json

我的请求处理程序在 solrconfig 中定义为...

<searchComponent class="solr.SpellCheckComponent" name="suggest">
    <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">suggest</str>  <!-- the indexed field to derive suggestions from -->
      <float name="threshold">0.0001</float>
      <str name="buildOnCommit">true</str>
    </lst>
<str name="queryAnalyzerFieldType">textSuggest</str>
  </searchComponent>

  <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
    <lst name="defaults">
      <str name="spellcheck">true</str>
      <str name="spellcheck.dictionary">suggest</str>
      <str name="spellcheck.onlyMorePopular">true</str>
      <str name="spellcheck.count">10</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

“建议”的字段类型在模式中定义为

    <fieldType name="textSuggest" class="solr.TextField" positionIncrementGap="100" >
      <analyzer type="index">
 <tokenizer class="solr.KeywordTokenizerFactory"/>
   <filter class="solr.LowerCaseFilterFactory"/>
 <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" />
<filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                preserveOriginal="1" splitOnCaseChange="1"
                />
 </analyzer>
<analyzer type="query">
   <tokenizer class="solr.KeywordTokenizerFactory"/>
   <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
    </fieldType>

【问题讨论】:

    标签: autocomplete solr autosuggest


    【解决方案1】:

    我为我的问题找到了 2 个解决方案...

    一种是创建一个不会将 q 参数拆分为多个单词的自定义 queryHandler。

    我选择的另一个选项是使用参数 spellcheck.q 而不是 q。我正在使用 solr 3.4.0 并使用 spellcheck.q 给了我 500 错误。我将 solr 更新到 3.6.1,现在它似乎可以正常工作了。

    【讨论】:

      【解决方案2】:

      SOLR 提供像 FST(从领域开始的建议)、AnalyzingInfix 等建议器,我们可以利用它们来生成智能的短语/单词自动建议。 阅读本文以了解有关实施的更多信息 http://lucidworks.com/blog/solr-suggester/

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 1970-01-01
        • 1970-01-01
        • 2016-08-30
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多