我目前正在使用 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/