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 нормализация по сигмоиде). функция на образце, который вы определите, что достаточно).
Но, опять же, у вас есть проблема, вы нашли решение, и вы пытаетесь привести это решение в эластичный поиск. Возможно, точно описав проблему и желаемый результат, можно было бы найти более простое решение.