2012-12-05 105 views
0

我試圖在索引拼寫的字段中使用拼音過濾器(solr 1.4)。以下是schema.xml中的字段類型配置solr spellchecker with phonetic filters

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="false"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.TrimFilterFactory" /> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/> 
     </analyzer> 
</fieldType> 

但是我沒有看到,當拼音濾波器用於任何差別(拼寫檢查索引的大小保持相同,並且在更正沒有區別)。與spellCheckers一起使用時,語音過濾器是否被忽略?或者我的配置有問題嗎?

solrconfig.xml中

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="spellcheck.collate">true</str> 
     <str name="spellcheck">true</str> 
     <str name="spellcheck.onlyMorePopular">false</str> 
     <str name="spellcheck.extendedResults">true</str> 
     <str name="spellcheck.count">5</str> 
    </lst> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
    </requestHandler> 

    <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
    <str name="queryAnalyzerFieldType">textSpell</str> 
    <lst name="spellchecker"> 
     <str name="name">default</str> 
     <str name="field">loc_name_texts</str> 
     <str name="spellcheckIndexDir">./spellchecker</str> 
     <str name="buildOnCommit">true</str> 
    </lst> 
    </searchComponent> 

UPDATE: 我已初步配置過濾器錯誤地所以正在使用WhitespaceTokenizer所有的時間。我現在糾正了這個錯誤。但是,當使用語音過濾器時,solr會返回轉換後的數據(metaphones)。無論如何要將內容存儲爲字段的一部分嗎?

回答

1

Solr中的語音過濾器用於返回修正建議。即使查詢拼寫錯誤,它們也用於匹配文檔。

spellcheck組件用於返回已更正的建議,但僅適用於包含整個單詞的字段,而不是語音字段。

0

嘗試改變「拼寫檢查」元素,這

<bool name="spellcheck">true</bool>