Я хотел бы манипулировать счетом, который я получаю, когда выполняю поиск по elasticsearch. Я уже использую опцию boost, но это не дает мне результатов, которые я хотел бы иметь. После некоторого чтения я считаю, что запрос function_score является решением моей проблемы. Я понимаю, как это работает, но я не могу понять, как я могу изменить свой текущий запрос, чтобы использовать его с запросом function_score.Манипулировать счетом в elasticsearch
"query": {
"filtered": {
"query": {
"bool": {
"should": [{
"multi_match": {
"type": "most_fields",
"query": "paus",
"operator": "and",
"boost": 2,
"fields": [
"fullname^2",
"fullname.folded",
"alias^2",
"name^2"
],
"fuzziness": 0
}
}, {
"multi_match": {
"type": "most_fields",
"query": "paus",
"operator": "and",
"boost": 1.9,
"fields": [
"taggings.tag.name^1.9",
"function",
"relations.master.name^1.9",
"relations.master.first_name^1.9",
"relations.master.last_name^1.9",
"relations.slave.name^1.9",
"relations.slave.first_name^1.9",
"relations.slave.last_name^1.9"
],
"fuzziness": 0
}
}, {
"multi_match": {
"type": "most_fields",
"query": "paus",
"operator": "and",
"fields": [
"fullname",
"alias",
"name"
],
"boost": 0.2,
"fuzziness": 1
}
}, {
"match": {
"extra": {
"query": "paus",
"fuzziness": 0,
"boost": 0.1
}
}
}]
}
},
"filter": {
"bool": {
"must": [
{
"terms": {
"type": ["Person"]
}
},
{
"term": {
"deleted": false
}
}
]
}
}
}
Как вы можете видеть, у нас есть четыре вида матчей.
- подталкивания 2: когда есть точные совпадения по имени
- подталкивания 1,9: когда есть точные совпадения на оснащениях
- подталкивания 0,2: при наличии совпадения по имени, но с одним характером письменного неправильно
- подталкивания 0,1: когда результаты в дополнительном (описание) поле
проблема я столкнулся в том, что матчи с одного персонажа написано неправильно и не мечения балл выше, чем матчи с правильная маркировка и все слово написано неправильно. Это должно быть по-другому ...
Любая помощь будет оценена :)