控制Elasticsearch高亮结果中的窗口大小

时间:2019-03-14 09:16:46

标签: elasticsearch

我正在寻找一种从Elasticsearch提取span_near匹配结果的方法。最终,我想提取该短语以及跨度术语左侧和右侧的几个标记。我了解了荧光笔,并认为它们是必经之路。

说这是我的查询:

GET morf_texts/_search
{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_term": {
            "content": {
              "value": "estetyczny"
            }
          }
        },
        {
          "span_term": {
            "content": {
              "value": "zachowanie"
            }
          }
        }
      ],
      "slop": 3,
      "in_order": false
    }
  },
  "highlight": {"fields": {"content": {}}}
}

结果命中列出如下:

"hits": {
    "total": 1,
    "max_score": 1.672149,
    "hits": [
      {
        "_index": "morf_texts",
        "_type": "doc",
        "_id": "1",
        "_score": 1.672149,
        "_source": {
          "content": """
Piękno – pozytywna właściwość estetyczna bytu wynikająca z zachowania proporcji, harmonii barw, dźwięków, stosowności, umiaru i użyteczności, odbierana przez zmysły. Istnieje piękno idealne, duchowe, moralne, naturalne, cielesne, obiektywne i subiektywne. Pojęcie to jest silnie związane z teorią estetyki, prawdy i dobra.
W metafizyce, piękno jest jedną z transcendentalnych właściwości bytu, wyrażającą jego scalenie, przejrzystość, proporcję wewnętrzną tworzyw bytu oraz doskonałość.
Badaniami nad precyzowaniem terminu piękna zajmują się nie tylko filozofowie i artyści, lecz także teoretycy z dziedzin: historii i krytyki sztuki, antropologii, socjologii, psychologii, a także szkolnictwa.
"""
        },
        "highlight": {
          "content": [
            "Piękno – pozytywna właściwość <em>estetyczna</em> bytu wynikająca z <em>zachowania</em> proporcji, harmonii barw, dźwięków"
          ]
        }
      }
    ]

这已经很棒,因为我在estetyczna的左侧获得了三个令牌,在zachowania的右侧获得了四个令牌。有没有一种方法可以控制将突出显示左侧和右侧的令牌数量?

1 个答案:

答案 0 :(得分:0)

因此,在寻找解决方案一段时间后,我认为无法控制左侧或右侧的令牌数量。

但是,可以控制的是每个获取的片段包含的字符数。如果字符数足够大,则该片段希望在左右两侧具有足够的上下文,以满足令牌计数要求。

使用fragment_size参数进行查询的示例如下:

GET morf_texts/_search
{
  "query": {
      ...
  },
  "highlight": {
    "fields": {
      "content": {
        "fragment_size": 200
      }
    }
  }
}