2011-09-02 67 views
3

我有一個包含AT & T的索引作爲字段,但是當我搜索此字段時,我們不能在查詢中放入&簽名,因此它被編碼爲AT%26T。搜索AT%26T什麼都不會返回, 有什麼方法可以使用分析器或過濾器來索引這種類型的術語。如何在索引索引中處理AT&T令牌

注:我已經使用WordDelimiter分析儀reserveOriginal = 1 ......但沒有奏效

+0

你使用了什麼標記器? – Dorin

+0

我使用WordDelimiter –

回答

1

除了別人顯示的其他原因是轉義特殊字符。你應該從列表中逃避所有:

+ - && || ! () { } [ ]^" ~ * ? : \

符號之前就試着用反斜槓。

+1

雖然不適用於我。 – zengr

3

你可以嘗試尋找AT&T

否則你可以在管理找出/分析查詢和索引階段的術語AT & T發生了什麼。有了詳細的介紹,您可以非常清楚地看到分析儀對您的條款做了什麼。

0

也許你可以嘗試使用catenateWords =「1」。所以AT & T我也會被索引爲ATT。 另外,還要確保在您都出現儀:

<analyzer type="query"> //this will define how the query is parsed and split into tokens before searching it 

<analyzer type="index">// this will define how the field is indexed 

如果你只有這個標籤<分析>超過頻譜儀將在查詢和索引時均可使用。

1

您需要稍微調整WordDelemiter。見我調整我爲jetwick做搜索主題標籤ALA #java

https://github.com/karussell/Jetwick/blob/master/src/main/java/de/jetwick/es/JetwickFilterFactory.java#L49

背景:AT &因爲「&」作爲其無數字或字符,但去除T被標記化通常爲AT和T在上面的課程中,您可以將'&'符號作爲數字處理,並且包含'&'符號的所有東西都將被標記爲'AT & T'(以及'AT'和'T'我認爲),但只有在preserveOriginal = 1或者你把它們當作字符來處理,但是它不會分成'AT'和'T'我認爲字符串的所有位置都被檢測爲字符

順便說一句:你需要重新索引並在查詢字符串上應用相同的分析器/標記器!