繁体   English   中英

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

[英]Return Elasticsearch highlight results in position order?

我目前正在使用 elasticsearch 在我的查询中提供的突出显示功能。 但是,我不太清楚的一件事是结果的排序方式。 我希望它们order that they appear在段落中的order that they appear而不是重要性/分数的order that they appear返回。 这样我就可以将它们与...的顺序与原始文档中的顺序相同(类似于 Google 结果)。 但是,他们目前正在根据最佳匹配以某种加权顺序返回?

有没有办法在看到突出显示结果后无需在现场进行额外的后期处理就可以实现这一点。

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

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

  "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"会导致排序遵循评分模式,这不一定遵循起始位置偏移顺序。 我相信这个比较器的确切代码可以在这里找到,它似乎基于片段的提升,然后是它的 startoffset。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM