2016-01-11 40 views
-1

我一直在使用lucene構建文檔索引並對它們執行搜索。我知道lucene支持基於levenshtein距離的FuzzyQuery。Lucene中的後綴長度模糊搜索

FuzzyQuery也有一個選項來定義前綴長度,在這裏我們可以保持固定的搜索詞的前幾個字符。我想知道是否有一個選項來定義後綴長度。或者請建議一些我可以實現的實現。

回答

0

FuzzyQuery前綴的主要原因是它允許搜索在檢查模糊匹配之前縮小可能的結果集,因此提供顯着的性能改進。添加後綴不會提供任何此類好處。

最好的方式實現這一目標,並獲得性能好處可能是指數扭轉了令牌,通過添加ReverseStringFilter到您的分析儀。這同樣經常用於支持領先的通配符查詢,而沒有通常伴隨的巨大性能影響。

+0

不會添加固定的後綴長度會以對稱方式減少結果集嗎?我的用例是這樣的,我希望一個字段的最後幾個字符完全匹配,同時容忍前幾個字符中的模糊匹配。我認爲結合ReverseStringFilter和前綴長度將幫助我實現這一點。保持這一點,看看有人建議更優雅的方式。 – Ulrich

+0

@Ulrich - 後綴不是有效地減少結果集大小的有效方法。將lucene索引想象爲一本書的索引。瞭解第一對字母后,您可以向右翻轉到索引的正確部分,找到需要查看的一大堆字。如果你知道該單詞的最後幾個字母,你仍然可以瀏覽索引中的每個單詞以找到正確的單詞。 – femtoRgon

+0

啊,我現在明白了。我的印象是我們可以修復任何給定的字符,並縮小搜索空間。 – Ulrich