ElasticSearch:在全文查询中返回围绕匹配项的一些文本?

时间:2018-07-03 07:02:50

标签: elasticsearch full-text-search

我对文章索引有一些全文搜索查询:

  "query": {
    "multi_match": {
      "query": article,
      "fields": [ "text" ],
      "minimum_should_match": "75%"
    }
  }

我想知道是否可以更改它以仅返回部分文本,而不返回整个匹配的文本。例如,假设我搜索“棕狐”。除了返回整篇文章,我只想返回围绕“棕狐”的任何匹配的几句话,因此结果可能是“ ..据说任何棕狐都可以越过栅栏..”,而忽略换行符。

在ES中有可能吗?

1 个答案:

答案 0 :(得分:0)

正如@ Adam-t所述,在EC中突出显示是此答案的关键。为了将来参考,我添加了我的搜索查询,以便能够获得所要求的答案。我发布此答案的原因是,我也遇到了同样的问题,并且花了我一段时间才找到合适的解决方案。

{
   "query":{
      "match_phrase":{
         "text":"investors"
      }
   },
   "highlight":{
      "fragment_size":100,
      "fields":{
         "text":{}
      }
   }
}

以上搜索查询将通过大文本搜索“投资者”一词,并返回如下所示的响应,

"highlight" : {
     "content" : [
          "*stocks closed at a near three-week high on Wednesday, led by blue-chips, but foreign <em>investors</em>",
          "The dollar currency ended weaker. ** Local <em>investors</em> picked up select shares, with one of the two presidential"
      ]
  }

fragment_size突出显示周围的文本,默认值为100