Я реализую внутренний поиск, который просматривает различные нормализованные поля, чтобы определить релевантность поисковым запросам пользователя. Стратегия best_fields
кажется иногда дает странные результаты, потому что «менее важное» поле дает наивысший балл и побеждает другие более важные поля с более слабыми совпадениями. Я добавил boost
, но увеличение этого значения, похоже, также исказит результаты; как и переход к стратегии most_fields
, поскольку не все страницы будут иметь все поля.
Как правильно go настроить приведенный ниже запрос и включить оценки из каждого поля?
Ниже приведен пример, в котором поле content
в конечном итоге выигрывает оценку «max» для best_field
(потому что поисковый запрос присутствует больше раз) и набирает больше очков, чем вторая страница, которую я хочу занять первой, потому что поиск термин - буквальное совпадение с полем keywords
. Более того, поскольку на важные страницы добавляется больше ключевых слов, их соответствие, кажется, еще больше обесценивается, поскольку длина поля намного больше средней.
Пример запроса
{
"query": {
'multi_match' : {
"query": "Hello World",
"fields": ["keywords^3", "name^2", "content^1"]
}
}
};
Пример документа / результатов :
[{
"name": "Howdy!",
"keywords: "",
"content": "Hello everybody, I'm in the world. hello there, i like saying hello"
},{
"name": "Hey",
"keywords: "Hello World, Hello, World",
"content": "Lot's of text, Lot's of text, Lot's of text, Lot's of text, Lot's of text, Hello"
}]