Я использую эластичный поиск для объединения разных вещей: - поиск по тексту - оценка на основе плотного вектора (косинусное сходство)
Я использую запрос с function_score
. Первая часть - это поиск по тексту (оценка), а затем применяется скрипт для вычисления косинусного сходства.
Моя проблема в том, что косинусное сходство не вычисляется на этапе запроса, и мой поиск в текст выступает в качестве предварительного фильтра. Я всегда буду получать результаты, связанные с текстовым поиском, даже если косинусное сходство лучше.
Это стандартное поведение function_score
в соответствии с do c:
Функция function_score позволяет вам изменять оценку документов, которые получены запросом. Это может быть полезно, если, например, функция оценки является вычислительно дорогой, и ее достаточно для вычисления оценки по отфильтрованному набору документов.
Я хотел бы вычислить косинусное сходство во время запроса и эта оценка будет объединена с текстовым поиском (с такой же важностью).
Спасибо!
Здесь вы найдете суть , описывающую проблему с "реальным" "пример.