2017-02-09 60 views
0

我在下面的彈性搜索中編入了索引文檔。彈性搜索突出顯示API突出顯示所有馬賽克字

文件:

{{"ID:1, "Cont": "yes there is a match"}, 
    {"ID":2, "Cont": "check this for it"} ....} 

當我搜索使用突出顯示文檔。

http://localhost:9200/sample/html/_search 
{ 
    "query": 
     {"bool": { 
      "should": [{"match": {"Content": "check mate"}}]}}, 
    "highlight" : { 
     "fields" : { 
      "Content" : {} 
     } 
    } 
} 

輸出如下。

"highlight": { 
     "Content": ["<em>check</em> blaa", "blaa blaa<em>check</em>"] 
} 

從高亮輸出,它看起來像檢查在兩個地方匹配,但是當我打開文檔,看看有檢查 15發生,也有在文檔中的匹配隊友

  1. 有沒有辦法讓高亮欄中的所有匹配的單詞都得到,即獲得這個例子的檢查和匹配。

    2.Is那裏拿到賽的出現計數即)檢查= 15,隊友= 1

回答

1

關於第一個問題的方式:

可以使用number_of_fragments選項來獲得更突出片段。默認情況下它被設置爲2(這就是爲什麼你只能看到2個亮點)。例如,如果你想看到更多,你可以將它設置爲100。

您還可以設置number_of_fragments0,這不會破壞你的內容展示的亮點,但會給你整個內容突出顯示(然後你會看到所有的亮點出現次數)。

文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html#_highlighted_fragments

第二個問題:

據我所知,我不認爲這是可能的......你將不得不從高亮結果我affraid盡數...

+0

我可以設置'number_of_fragments:0',但內容很大(整個HTML頁面),但有沒有辦法只獲得匹配的短語片段而不是整個字段,我不能給像100這樣的值number_of_fragments,因爲我不知道我得到多少匹配 – The6thSense

+0

我d除了將'number_of_fragments'設置爲像9999999這樣的非常大的數字之外,還不知道其他任何方法^^',但是如果您試圖僅僅計算出現不是真正好的方式的事件......(但我不知道該如何可能是好方法) –

+0

我收到很多錯誤的肯定匹配,所以我試圖查看我的查詢的哪些標記與索引文檔匹配。從中我可以開發一個算法來消除誤報匹配。讓我們看看是否可以找到一種方法來計算或獲取所有匹配的標記。如果沒有,我會嘗試你的想法設置爲一個大數字,看看:)。 – The6thSense