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