2017-02-09 108 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