在 Elasticsearch 中搜索短语时应用不同的提升值?
Apply different boosting values when searching for phrase in Elasticsearch?
我想在 Elasticsearch 中搜索一个短语,例如 "personal tax date"。我希望返回的结果给术语"tax"更多的权重。
到目前为止,我知道如何提升整个索引或提升不同字段,但仍然不知道如何提升不同的术语?有帮助吗??
您可以使用 query_string
查询并使用 query string syntax 提升术语,如下所示:
{
"query": {
"query_string": {
"query": "personal tax^2 date"
}
}
}
使用函数得分我们可以按字段提升
GET <index_name>/_search
{
"query": {
"function_score": {
"query": {
"query_string": {
"query": "*personal tax date*",
"fields": [
"field_1",
"field_2"
]
}
},
"boost": "5",
"functions": [
{
"filter": { "match": { "field": "tax" } },
"weight": 30
},
{
"filter": { "term": { "ent_name": "tax" } },
"weight": 25
}
],
"score_mode": "multiply",
"boost_mode": "sum"
}
}
我想在 Elasticsearch 中搜索一个短语,例如 "personal tax date"。我希望返回的结果给术语"tax"更多的权重。
到目前为止,我知道如何提升整个索引或提升不同字段,但仍然不知道如何提升不同的术语?有帮助吗??
您可以使用 query_string
查询并使用 query string syntax 提升术语,如下所示:
{
"query": {
"query_string": {
"query": "personal tax^2 date"
}
}
}
使用函数得分我们可以按字段提升
GET <index_name>/_search
{
"query": {
"function_score": {
"query": {
"query_string": {
"query": "*personal tax date*",
"fields": [
"field_1",
"field_2"
]
}
},
"boost": "5",
"functions": [
{
"filter": { "match": { "field": "tax" } },
"weight": 30
},
{
"filter": { "term": { "ent_name": "tax" } },
"weight": 25
}
],
"score_mode": "multiply",
"boost_mode": "sum"
}
}