Применять разные значения повышения при поиске фразы в Elasticsearch?
Я хочу найти в Elasticsearch фразу, например "дата налогообложения физических лиц". Я хочу, чтобы возвращаемые результаты придавали больший вес термину "налог".
Пока я знаю, как повысить весь индекс или повысить для разных полей, но все еще не знаю, как повысить разные термины? Любая помощь??
2 ответа
Решение
Используя функцию Score, мы можем увеличить по полям
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"
}
}
Вы можете использовать query_string
запросить и увеличить термин, используя синтаксис строки запроса, как показано ниже:
{
"query": {
"query_string": {
"query": "personal tax^2 date"
}
}
}