Solr建议完全匹配

时间:2015-06-18 06:50:33

标签: solr lucene autosuggest

我试图让solr返回与建议完全匹配,例如:

  • spellcheck.q = tota 会在结果中返回总计,但
  • spellcheck.q =总计不会在结果中返回总计

我正在使用此字段提供建议:

<fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
</fieldType>

任何想法如何让Solr在建议上返回完全匹配?

4 个答案:

答案 0 :(得分:1)

您正在使用SpellChecker组件,正如其名称所示,该组件用于拼写检查。它返回应该如何拼写输入的建议。当单词拼写正确(等于完全匹配)时,它不会返回任何内容,这就是您在列表中看不到该单词的原因。

自Solr 4.7以来,我们添加了一个新的Suggestion组件,该组件实际上是为自动提供而实现的,并产生了您期望的结果。

答案 1 :(得分:0)

你可以试试这个

吗?
<fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="front"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="back"/>
  </analyzer>
</fieldType>

答案 2 :(得分:0)

如本维基页面所述:https://cwiki.apache.org/confluence/display/solr/Suggester

To be used as the basis for a suggestion, the field must be stored.

确保存储您的字段。 您的字段尚未存储,因此它会返回您的索引器压缩的数据。

答案 3 :(得分:-1)

你的问题来了,因为你使用了基于拼写检查组件的旧建议组件(我猜你在5之前使用过solr版本)。

使用旧的拼写检查/建议,如果单词匹配,则不会在响应中返回!

使用solr.suggestComponent进行测试(如果您的版本中存在)。

请参阅:https://cwiki.apache.org/confluence/display/solr/Suggester