2011-10-23 98 views
0

我試圖以允許我使用前綴查詢'æb*'以及'aeb*'來查找文檔的方式來索引字段。會發生什麼:它發現後者,但不是前者。同樣的問題,與A,I等帶ISOLatin1Accent字符的Solr前綴查詢

這是我的架構:

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 

    </analyzer> 
</fieldtype> 

正如你可以看到我使用索引和查詢相同的分析儀。所以如果我理解正確,查詢'æb*'應該歸一化爲'aeb*'。 '*'符號是不是干擾?如何設置我的模式以獲得所需的結果?

我正在使用Solr 1.4.1。

回答

1

關於前綴,通配符和模糊搜索,不對搜索詞執行文本分析。
因此,即使在搜索時指定了MappingCharFilterFactory,搜索項也不會進行任何分析。
而且由於分析在索引時間應用,它只會匹配aeb*(重音過濾器和小寫字母),甚至沒有任何upper case matches

您可以定義自己的查詢解析器並分析前綴查詢的搜索條件。
否則,定義帶有重音和非重音版本的字段,並在兩者上都進行搜索。 但是,您仍然需要小寫您的搜索字詞。

+0

謝謝。我想我會在編制索引之前將其標準化,或者完全放棄標準化。 – Morrowless