2010-11-01 111 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(並且只有更多人口=假)