我的索引中有很多糟糕的单词,只是使用我的数据和附带的示例。这使得拼写建议非常糟糕。
例如,它建议了很多随机1-3个字符长的单词。例如:
查询carr:ca ar c r r car rr carrot。
我希望拼写查询忽略所有那些无用的单词。它们并不是真正的停止词,而是随机缩写词。我还没想出如何在索引编制过程中跳过一个字母的单词......
另外,如果你搜索arrot,你永远找不到胡萝卜。怎么能实现呢?
答案 0 :(得分:0)
在您用于建议的字段的字段类型定义中,您可以使用LengthFilterFactory - 将min设置为3,并且您不会看到索引的短字。
请参阅:https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory
对于问题的第二部分,您可以在字段定义中使用
<filter class="EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="back" />
这将从单词的结尾生成nGrams(ot,rot,rrot,arrot)。这取决于您如何生成和处理查询的具体细节。