Return Elasticsearch 按位置顺序突出显示结果?

Return Elasticsearch highlight results in position order?

我目前正在使用 elasticsearch 在我的查询中提供的 highlighting 功能。但是,我不太清楚的一件事是结果的排序方式。我更希望他们在 order that they appear 段落而不是 importance/score 中返回。这样我就可以按照与原始文档中相同的顺序将它们与 ... 连接起来(类似于 Google 结果)。但是,他们目前 return 根据最佳匹配按某种加权顺序排列?

有没有办法在看到突出显示结果后无需在字段上进行额外的 post 处理来完成此操作。

我看到有一个用于突出显示的 "order" : "score" 选项,但似乎没有任何其他记录的选项来更改 return 顺序。 (顺便说一句,我不明白默认顺序和评分顺序之间的区别)。

这是我查询的突出显示部分的片段。

  "highlight": {
    "fields": {
      "synopsis": {
        "fragment_size": 150,
        "number_of_fragments": 4
      }
    }
  }

所以在做了一些尝试之后,我发现 fast-vector-highlighter 会自动按照原始文档中出现的顺序对片段进行排序。为此,我需要将 "term_vector" : "with_positions_offsets" 添加到我的概要字段映射中。

{
  "properties" : {
    "synopsis" : {
      "type" : "string",
      "term_vector": "with_positions_offsets"
    }
  }
}

然后使用我的突出显示查询:

{
  "query": {
    "match": {
      "synopsis": "foo"
    }
  },
  "highlight": {
    "fields": {
      "synopsis": {
        "type": "fvh",
        "fragment_size": 150,
        "number_of_fragments": 4
      }
    }
  }
}

注意:使用 "order" : "score" 会导致排序遵循评分模式,这不一定遵循起始位置偏移顺序。我相信可以找到这个比较器的确切代码 here,它似乎是基于片段的提升然后是它的 startoffset。