我已根据此处给出的fieldType实现了solr拼写检查器: http://wiki.apache.org/solr/SpellCheckingAnalysis 对供应商名称进行拼写检查,其中应提供与输入的搜索词相关的建议。 我已经使用copyField作为上述类型的vendorName字段,即textSpell 对于我的一些查询,我得到了奇怪的整理结果。 例如 1)maccys没有给我任何结果,因为maccy给了我想要的结果,即macy's。我比较了为maccys和amp;做的文本分析(管理工具)。 maccy同时使用text& textSpell fieldtypes并且都将macy作为endresult。那么为什么拼写检查器没有返回结果呢?
2)khols给了我'鞋'的整理结果,正确的结果'kohls'是(鞋子和商店)之后的第三个建议。
onlyMorePopular标志为false,精度为默认值0.5
提前感谢您的帮助。我在调试方面略有失误。
答案 0 :(得分:2)
虽然我们有很多可用的数据,但是我们遇到了拼写检查器产生奇怪结果的相同问题。我无法帮助如何更好地调试它,但我可以告诉你我们做了什么:
我们正在使用文本字段 - 没有空格或标准标记器!你还可以添加一个木瓦过滤器,如果你有更少的数据来索引不仅“你好兔子”而且还“兔子你好”,但这会炸掉拼写检查索引更多
<fieldType name="txtspell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory"
pattern="[\-\.\/\(\),]" replacement="" replace="all"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="spellstopwords.txt"/>
<!-- we don't want duplicates for one doc -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
如果你真的需要整理然后(如果你不使用木瓦过滤器,你需要它)你可以使用来自主干的solr,你可以指定maxCollationTries = 1以确保返回的修正会产生一些命中