Скоринг в Сольре
Вычисление оценки Solr на основе процентного соотношения двух строк.
Например: если я искал ABDUL, то результаты, похожие на эту строку поиска, должны быть выше по счету и так далее.
Пример вывода из моего приложения: Оценка выходных имен Abdel Aziz RANTISI 2.218595
Абдул Хуссейн ABBAS 2.218595
Абдул Кадер Ибрагим МОХАМЕД 2.218595
Я не могу понять, как эта оценка присваивается этим результатам, и если мне нужно изменить оценку, то как я могу изменить эту оценку. Я прошел по этой ссылке http://lucene.apache.org/core/3_6_0/scoring.html
1 ответ
Я не думаю, что вы должны учитывать фактическую оценку, а скорее, как оценка влияет на представленный результат.
По умолчанию Solr выполняет точное совпадение терминов (поскольку именно это лучше всего делает индекс). Обычно вы решаете эту проблему путем преобразования данных как при индексации, так и при запросах, например, при фонетическом поиске, когда вы индексируете фонетическую версию поля, а также обычное поле, а затем выполняете запросы, используя как обычный текст, так и преобразованный фонетический версия текста. Наиболее полезные неточные обращения обычно производятся с использованием фонетического поиска, когда фонетическое поле оценивается ниже, чем точное поле. Не забудьте использовать фонетический алгоритм, который подходит для типа контента, который вы индексируете (имена / общий текст / и т. Д.) И для языка, который вы индексируете.
Однако вы также можете выполнить нечеткий поиск, где вы можете настроить коэффициент сходства, который определяет попадание, используя term~[0-1]
(если вы пропустите значение от 0 до 1, используется 0,5). Это вполне может быть достаточно для того, что вам нужно, и вы можете настроить значение, чтобы разрешить тот тип нечеткости, который необходим вашему приложению.
Вы также можете использовать компонент SpellChecker, чтобы получить термины, наиболее близкие к тому, из чего состоит запрос, используя различные методы вычисления "близости" (так как "процентная доля похожа" довольно открыта для интерпретации), например, Левенштейн.