我试图让solr返回与建议完全匹配,例如:
我正在使用此字段提供建议:
<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在建议上返回完全匹配?
答案 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