2014-11-06 35 views
1

我的索引中有很多糟糕的词语,只是使用我的数据和随附的示例。这使得拼写建议非常糟糕。Solr和拼写排除结果中的短语

例如,它建议大量随机1-3个字符长的单词。例如:

查询carr:ca ar c rr car rr carrot。

我想拼写查询忽略所有这些无用的单词。他们不是真正的停止词,而是随机的缩写词。我还没有想出如何在索引期间跳过一个字母词...

此外,如果你搜索arrot,你永远找不到胡萝卜。这怎么能实现?

回答

0

在用于建议的字段的字段类型定义中,可以使用LengthFilterFactory - 将min设置为3,并且根本不会看到编入索引的简短单词。

参见:https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory

对于问题的第二部分,你可以在你的领域定义

<filter class="EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="back" /> 

使用将从字的末尾产生的n-gram(OT,腐烂,rrot, arrot)。这取决于你如何生成和处理你的查询的具体细节。

+0

谢谢!我会尝试。 – 2014-11-06 10:08:07

+0

将文档ID 1写入索引的异常;可能的分析错误。对于EdgeNGram,任何线索为什么? – 2014-11-06 12:44:17

+0

粘贴异常?你有没有尝试从一个空索引,只是为了确保? – Yann 2014-11-06 13:05:59