В настоящее время мы работаем сasticsearch 6.6, и у нас проблемы с match_phrase и вычисленным счетом.
Что такое настройка
На данный момент настройка подобия такова:
"scripted_wc": {
"type": "scripted",
"script": {
"source": "return doc.freq;"
}
}
Что мы хотим иметь
Например, у нас есть 3 документа:
"bbb aaa aaa bbb aaa"
"aaa ccc aaa bbb"
"ccc aaa aaa bbb aaa"
И запрос выглядит так:
GET _search/
{
"explain": true,
"query": {
"match_phrase": {
"myfield": "ccc aaa"
}
}
}
Когда мы запрашиваем "aaa"
, получаются 3, 2 и 3 балла. Это правильно. Но если мы ищем "ccc aaa"
, мы получаем оценки 0, 2, 2. Мы ожидаем получить 0, 1, 1. Когда мы включаем объяснение, мы видим, что для каждого добавленного слова создается своего рода подзапрос, который возвращает 1 но подводит итог. Таким образом, «ccc aaa aaa» возвращает 0, 0, 3 вместо 0, 0, 1.
«bbb aaa» должно возвращать 2, 0, 1 для каждого документа (0, конечно, не будет возвращено). Здесь вы можете увидеть вывод объяснения: https://pastebin.com/jHPnTLEV
Это ошибка или наше понимание неверно? Как мы можем этого добиться?
Спасибо за помощь