#elasticsearch
#elasticsearch
Вопрос:
Я знаю, что этот вопрос задавался и на него были даны ответы в нескольких сообщениях, но, попробовав большинство из них, я должен задать его здесь.
Я хочу сначала получить точные совпадения, а затем нечеткие совпадения.
"query" : {
"bool" : {
"must": [
{
"match": {
"name": {
"query":req.params.name,
"fuzziness" : 1
}
}
}
,
{
"match_phrase": {
"name": {
"query": req.params.name
}
}
}
],
"should": [
{
"match": {
"name": {
"query":req.params.name,
"boost": 5
}
}
}
]
}
}
То, что я получаю прямо сейчас, — это нечеткие совпадения, показываемые раньше, чем точные.
Спасибо за чтение.
Комментарии:
1. Чтобы понять, почему нечеткие совпадения оцениваются выше, вы должны передать
?explain=true
параметр в своем поиске. Это даст вам подробную разбивку баллов за ваши хиты. Дополните это этим документом: elastic.co/guide/en/elasticsearch/guide/current/… Должно быть очевидно, что нечеткие совпадения оцениваются выше из-за более высокого компонента из IDF (обратная частота документов). Поняв причину, стоящую за оценками, возможно, вы можете разделить свой запрос на два запроса constant_score, один для fuzzy, другой для match или полностью отключить IDF?2. Спасибо, что поделились своими мыслями здесь. Я попробую это.