我們在我們的應用程序中使用空白分析器配置了彈性搜索。這句話是記號化的空白,所以像<fantastic> project
一個名稱索引爲使用彈性搜索檢索標記內容和連字詞
["<fantastic>", "project"]
和ABC-123的高清項目被收錄爲
["ABC-123-def", "project"]
當我們再搜索ABC- *預期的項目出現。但是,如果我們專門搜索<fantastic>
它根本不會顯示出來。就像Lucene/Elastic Search忽略任何包含尖括號的搜索項。但是,我們可以搜索fantastic
或<*fantastic*
或*fantastic*
,它發現它很好,即使該單詞沒有與尖括號分開索引。
標準分析器對任何非字母數字字符進行標記。 <fantatsic>
項目索引爲
["fantastic", "project"]
和ABC-123-DEF項目索引爲
["ABC", "123", "def", "project"]
這打破了使用ABC-123-*
成功地進行搜索的能力。但是,我們用標準分析儀得到的結果是,有人可以專門搜索<fantastic>
,並返回所需的結果。
如果不是一個標準的分析器我們添加一個char_filter到空白分析器過濾掉上的標籤的尖括號,(取代<(.*)>
與$1
)應當由此索引: <fantatsic> project
被索引爲
["fantastic", "project"]
(無尖括號)。和ABC-123的高清項目被收錄爲
["ABC-123-def", "project"]
它看起來很有希望,但我們結束了相同的結果作爲普通的空白分析:當我們爲<fantastic>
專門搜索,我們什麼也沒得到,但*fantastic*
工作正常。
任何人都可以在堆棧溢出解釋這種怪異?
正是我在找什麼,謝謝! – GLaDOS