solr spellchecker

时间:2010-11-01 12:32:46

标签: solr spell-checking

我已根据此处给出的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

提前感谢您的帮助。我在调试方面略有失误。

1 个答案:

答案 0 :(得分:2)

虽然我们有很多可用的数据,但是我们遇到了拼写检查器产生奇怪结果的相同问题。我无法帮助如何更好地调试它,但我可以告诉你我们做了什么:

  1. 我们正在使用文本字段 - 没有空格或标准标记器!你还可以添加一个木瓦过滤器,如果你有更少的数据来索引不仅“你好兔子”而且还“兔子你好”,但这会炸掉拼写检查索引更多

     <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>
    
  2. 如果你真的需要整理然后(如果你不使用木瓦过滤器,你需要它)你可以使用来自主干的solr,你可以指定maxCollat​​ionTries = 1以确保返回的修正会产生一些命中

  3. 我们使用spellcheck.accuracy = 0.7(且onlyMorePopular = false)