Как нормализовать счет по нескольким результатам поиска - PullRequest
4 голосов
/ 27 марта 2020

Мне нужна помощь в нормализации счета с помощью Elasti c Поиск. Я использую N-Gram, Fuzziness, Custom Queries и phoneti c search

В базе данных: Алиса, Боб, Кэти

Поисковый запрос 1: Алиса

   Results are : Max Score(500), Alice(500)[100%], Cathy(300)[60%], Bob(200)[40%]

Однако поисковый запрос 2: Оба

   Results are : Max Score(200), Bob(200)[100%], Alice(100)[50%], Cathy(50)[25%]

Как я хочу, чтобы результаты выглядели так:

   Results are : Max Score(500), Bob(200)[40%], Alice(100)[10%], Cathy(50)[5%]

Я хочу стандартная максимальная оценка или способ количественного определения лучших результатов любого / нескольких запросов.

Я хочу, чтобы оценка показала

', насколько результат похож на запрос '

not

' как ранг результата по сравнению с другими результатами. '

1 Ответ

0 голосов
/ 01 апреля 2020

https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-rank-feature-query.html

Более того, я думаю, что было бы проще пойти наоборот. Чего вы хотите добиться, нормализуя счет? В конце концов, что вы действительно хотите рассчитать? Один из подходов может go выглядеть следующим образом: хотя вы не можете быть уверены, что ваш результат полностью совпадает, просто набрав наибольшее количество очков, вы можете рассчитать, насколько он релевантен, проверив, насколько он отличается от остальных. пример:

Input: Alice
Output: Alice (100), Alicia (90), Alkis (50), Alex (48) etc

Отклонение здесь очевидно, и вы можете видеть, что наиболее вероятно, что первые результаты (до большого падения) должны быть очень относительными, а не просто совпадающими. Таким образом, вы можете предположить, что Алиса 100%

Input: `Alice`
Output: Alexander (100), Alkis (95), Alter (90) etc

Отклонения здесь нет. Здесь нет значительного снижения, поэтому результаты могут быть либо очень относительными, либо нет. Таким образом, вы не можете предположить, что Александр на 100%, но действительно ли это имеет значение?

В основном вы полагаетесь на то, что у вас достаточно данных для расчета основного изменения (базовая c нормализация по сигмоиде). функция на образце, который вы определите, что достаточно).

Но, опять же, у вас есть проблема, вы нашли решение, и вы пытаетесь привести это решение в эластичный поиск. Возможно, точно описав проблему и желаемый результат, можно было бы найти более простое решение.

...