2012-10-25 27 views

回答

5

我從您的模式中看到,您正在使用ASCIIFoldingFilterFactory已在text字段類型中,該字段類型已分配給default字段。但是,它只適用於該領域的索引。我建議你也將它應用到查詢你的領域,以確保你的查詢條件被摺疊以匹配索引中的項目。通常,在這種情況下,當您將過濾器工廠添加到索引時,您還會將其添加到查詢中,以便查詢條件和索引條款都被適當地轉換/比較。

所以我會修改你的架構如下:

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
    </analyzer> 
</fieldType> 
+0

有這樣也測試過,但我發現,沒有工作。我注意到有人設法解決它。 http://www.bitabit.eng.br/2011/03/16/sunspot-solr-how-to-sort-accented-fields/我應用了他所使用的相同規則,但仍無濟於事。 – user1127871

+0

我們今天使用ASCIIFoldingFilterFactory,它解決了同樣的問題。可能是使用'words =「mapping-FoldToASCII.txt」',因爲我認爲這限制了正在摺疊的單詞。嘗試刪除該設置或將jose添加到列表中... –

+0

仍然不能,因爲該詞可能是其他José詞語,如João,Cláusula,Decisão等等。 – user1127871