2016-02-29 36 views
1

我是新來的彈性搜索。我試圖修復我們的搜索,以便它允許用戶搜索html標籤中的內容。目前,我們正在使用空格標記器,因爲我們需要它使用連字符名稱返回結果。因此,aname123-suffix project被索引爲["aname123-suffix", "project"],用戶搜索"aname123-*"會返回正確的結果。如何獲得彈性搜索以返回尖括號內的結果?

我的問題出現了,因爲我們也希望能夠在html標籤內搜索內容。因此,例如對於名爲<aname123>-suffix project的項目,我們希望能夠輸入搜索詞<aname123>-*並獲取正確的結果。

該索引具有空白標記化器的正確標記,即["<aname123>-suffix", "project"],但是當我的搜索字符串是"\<aname123\>\-suffix""\\<aname123\\>\\-suffix"時,彈性搜索不會返回任何結果。

我認爲解決之道在於無論是在

  1. 修改搜索字符串,以便彈性搜索返回<aname123>-suffix當我問它;或
  2. 能夠索引標籤內分別從空白令牌的內容,即["<aname123>-suffix", "project", "aname123", "suffix"]

到目前爲止,我一直在通過改變索引接近它,但我還沒有成功。標準標記器將允許標記內容的搜索結果,但它無法返回aname123-*的搜索結果。目前我分析儀的設置是這樣的:

{ "analysis": 
     { "analyzer": 
       { "my_whitespace_analyzer" : 
        {"type": "custom" 
         {"tokenizer": "whitespace}, 
         {"filter": ["standard", "lowercase", "stop"]} 
        } 
       }, 
       { "my_tag_analyzer": 
        {"type": "custom" 
         {"tokenizer": "standard"}, 
         {"filter": ["standard", "lowercase", "stop"]} 
        } 
       } 
      } 
} 

我可以創建自定義字符過濾器,剝離該<和>,所以我的索引中包含aname123;但由於某些原因,在<aname123>*上搜索時,彈性搜索仍不會返回正確的結果。但是,當我使用標準分析儀時,該索引包含aname123它返回<aname123>*的預期結果...彈性搜索中尖括號有什麼特別之處?

回答

0

你可能想看看在html_strip字符過濾:

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html

從的elasticsearch開發商之一的一個例子是在這裏:

https://gist.github.com/clintongormley/780895

+0

謝謝,我看着但它會去掉標籤內的內容以及尖括號。我想保留標籤內的內容。 ''應該索引到'atag' ... – GLaDOS

+0

但是這讓我覺得...我應該可以使用char過濾器來代替'<' and '>'沒有什麼... – GLaDOS

+0

我沒有看太緊密,但我的理解是,這是基於我鏈接的要點示例 – sinneduy

相關問題