elasticsearch - 按位置顺序返回 Elasticsearch 高亮结果?

标签 elasticsearch lucene highlight

我目前正在使用 highlighting elasticsearch 在我的查询中提供的功能。但是,我不太清楚的一件事是关于结果的排序方式。我希望他们回到 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"将导致排序遵循评分模式,它不一定遵循起始位置偏移顺序。我相信可以找到此比较器的确切代码 here ,这似乎基于片段的提升,然后是它的起始偏移。

关于elasticsearch - 按位置顺序返回 Elasticsearch 高亮结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489012/

相关文章:

jquery - 滚动时突出显示标题

highlight - 在 html 文档中标记文本

elasticsearch - 如何知道 ElasticSearch 分片使用的堆数量?

Elasticsearch 在分析器中结合语言和 char_filter

Emacs:设置特定窗口的背景颜色

security - 是否可以将 Solr 与 SSL 和 CA 签名证书一起使用

indexing - 处理现有字段类型的更改?

java - 使用ES Java API v7.x编写elasticsearch过滤器搜索

elasticsearch - fluentd:使用 Elasticsearch FluentD和Kibana从多个资源进行日志聚合

elasticsearch - 无痛但 'No field found'遍历所有项目