2010-11-01 148 views
1

我已经实现了基于这里给出的字段类型Solr的拼写检查: http://wiki.apache.org/solr/SpellCheckingAnalysis 的拼写检查是地方应给予建议与输入的搜索项的供应商名称做。 我已经使用copyField作为上述类型的vendorName字段,即textSpell 我收到了我的一些查询奇怪的整理结果。 例如 1)maccys不给我任何结果,因为maccy's给了我想要的结果,即macy's。我比较了使用文本& textSpell字段类型和maccy作为endresult为maccys完成的文本分析(管理工具)。那么为什么没有从拼写检查程序返回结果呢?Solr的拼写检查

2)khols给我'鞋'的结果,因为正确的结果'科尔斯'是第三个建议后(鞋&店)。

的onlyMorePopular标志是假的,精度为0.5

预先感谢任何帮助的默认。我在进一步调试方面略有损失。

回答

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(并且只有更多人口=假)