我目前正在使用Elasticsearch在查询中提供的突出显示功能。但是,我不太清楚的一件事是关于结果的排序方式。我希望他们order that they appear在段落而不是重要性/得分中返回。这样一来,我就可以按照与...原始文档中相同的顺序将它们与连接在一起(类似于Google结果)。但是,他们目前正在根据最佳匹配以某种加权顺序返回?
order that they appear
...
有没有一种方法可以完成此操作,而无需在看到突出显示结果之后在现场进行其他后处理。
我看到有"order" : "score"一个突出显示的选项,但是似乎没有其他记录在案的选项可以更改退货顺序。(顺便说一句,我不理解默认顺序和计分顺序之间的区别)。
"order" : "score"
这是我查询中突出显示的部分。
"highlight": { "fields": { "synopsis": { "fragment_size": 150, "number_of_fragments": 4 } } }
因此,在进行了一些尝试之后,我发现fast-vector- highlighter会按照原始文档中出现的顺序对片段进行自然排序。为了实现这一点,我需要添加"term_vector" : "with_positions_offsets"到大纲字段映射中。
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"将导致排序遵循计分模式,而不一定遵循起始位置偏移顺序。我相信可以在这里找到该比较器的确切代码,这似乎是基于片段的增强,然后是其起始偏移量。