4
我想用apache solr使用這個方案進行搜索http://pastie.org/5114389但是當我輸入「josé」時找到了文件,但是當我寫「jose」時,我沒有得到結果。apache solr的去除口音
Efetuei在互聯網上搜索答案,並不得不使用該類,但是當我插入沒有區別。
我想用apache solr使用這個方案進行搜索http://pastie.org/5114389但是當我輸入「josé」時找到了文件,但是當我寫「jose」時,我沒有得到結果。apache solr的去除口音
Efetuei在互聯網上搜索答案,並不得不使用該類,但是當我插入沒有區別。
我從您的模式中看到,您正在使用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>
有這樣也測試過,但我發現,沒有工作。我注意到有人設法解決它。 http://www.bitabit.eng.br/2011/03/16/sunspot-solr-how-to-sort-accented-fields/我應用了他所使用的相同規則,但仍無濟於事。 – user1127871
我們今天使用ASCIIFoldingFilterFactory,它解決了同樣的問題。可能是使用'words =「mapping-FoldToASCII.txt」',因爲我認爲這限制了正在摺疊的單詞。嘗試刪除該設置或將jose添加到列表中... –
仍然不能,因爲該詞可能是其他José詞語,如João,Cláusula,Decisão等等。 – user1127871