每个字段的 Elasticsearch 提升与函数得分
Elasticsearch boost per field with function score
我有一个针对不同字段和 ORed 结果的不同查询数据的查询。我也想支持某些领域的热门歌曲。理想情况下,这只会增加排名,但不会导致结果不包含其他字段中的某些术语。这会使结果偏向那些具有某些字段的结果。
我认为这曾经被称为提升,但由于提升已从 Lucene 中删除,Elasticsearch 已将它们替换为函数分数,我不明白如何将它们添加到我的查询中。
查询如下所示:
POST /index/type/_search
{
"query": {
"bool": {
"should": [{
"terms": {
"field1": ["67", "93", "73", "78", "88", "77"]
}
}, {
"terms": {
"field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
}
}, {
"terms": {
"category": ["cat2"]
}
}]
}
}
}
在所有可能的匹配项中,我想将排名偏向那些来自 catagory
字段的项。
删除了 _boost
字段(文档级提升),但 field-level boosts, and query boosts 仍然可以正常工作。看起来您正在寻找查询提升。
所以,如果你想提高 field1
上的匹配度:
"bool": {
"should": [{
"terms": {
"field1": ["67", "93", "73", "78", "88", "77"],
"boost": 2.0
}
}, {
"terms": {
"field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
}
}, {
"terms": {
"category": ["cat2"]
}
}]
}
我有一个针对不同字段和 ORed 结果的不同查询数据的查询。我也想支持某些领域的热门歌曲。理想情况下,这只会增加排名,但不会导致结果不包含其他字段中的某些术语。这会使结果偏向那些具有某些字段的结果。
我认为这曾经被称为提升,但由于提升已从 Lucene 中删除,Elasticsearch 已将它们替换为函数分数,我不明白如何将它们添加到我的查询中。
查询如下所示:
POST /index/type/_search
{
"query": {
"bool": {
"should": [{
"terms": {
"field1": ["67", "93", "73", "78", "88", "77"]
}
}, {
"terms": {
"field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
}
}, {
"terms": {
"category": ["cat2"]
}
}]
}
}
}
在所有可能的匹配项中,我想将排名偏向那些来自 catagory
字段的项。
删除了 _boost
字段(文档级提升),但 field-level boosts, and query boosts 仍然可以正常工作。看起来您正在寻找查询提升。
所以,如果你想提高 field1
上的匹配度:
"bool": {
"should": [{
"terms": {
"field1": ["67", "93", "73", "78", "88", "77"],
"boost": 2.0
}
}, {
"terms": {
"field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
}
}, {
"terms": {
"category": ["cat2"]
}
}]
}