首页 文章

solr spellchecker

提问于
浏览
1

我已根据此处给出的fieldType实现了solr拼写检查器:http://wiki.apache.org/solr/SpellCheckingAnalysis将对供应商名称进行拼写检查,其中应提供与输入的搜索词相关的建议 . 我已经使用copyField作为上述类型的vendorName字段,即textSpell我得到一些奇怪的整理结果我的一些查询 . 例如1)maccys没有给我任何结果作为maccy 's gives me the desired result i.e. macy' s . 我比较了使用text和textSpell fieldtypes为maccys和maccy做的文本分析(管理工具),并且都将macy作为endresult . 那么为什么拼写检查器没有返回结果呢?

2)khols给了我'鞋'的整理结果,正确的结果'kohls'是(鞋子和商店)之后的第三个建议 .

onlyMorePopular标志为false,精度为默认值0.5

在此先感谢您的帮助 . 我在进一步调试方面略有失误 .

1 回答

  • 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以确保返回的修正会产生一些命中

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

相关问题