2017-02-02 4 views
1

Рассмотрим ситуацию, когда все документы имеют следующие поляНастройка лазурное поиска скоринг определенным образом

enter image description here

Требование в том, что для электронной почты оценка должна быть либо 100 (если точное совпадение) или 0. Для оставшихся полей от 0 до 100 зависит от расстояния редактирования.

Пусть в индексе записи, как следующий

1.abcd @ gmail.com, Peterr, Parker, Developer 2.xyz @ yahoo.com, Стив Смит, менеджер

запрос сделан на нечеткий поиск всех полей и параметров, как ABCD @ gmail.com, Питомец, Par, DevL

результат поиска должен иметь счет для первой записи, как

оценки по электронной почте + баллу фамилий + балла имени + баллов титула

= 100 + 50 (около расстояния редактирования из «Peterr и Pet») + 50 (ки редактирования расстояния «Peterr и Паркера «): +44 (приблизительно изменить расстояние 'DevL и Developer')

= 244

Аналогично, результат поиска должен иметь счет в аналогичным образом.

Я только что проверил, что поиск в лазурном поиске имеет вес, но те, кого я не думаю, будут очень полезны в таких сценариях, как это. Главное, что мы ищем, - найти способ, по которому оценка поиска возвращалась для каждой записи Поиск в лазури будет соответствовать оценке, о которой я говорил выше

ответ

2

Чтобы уточнить, кажется, что вам нужна формула подсчета, чтобы быть функцией расстояния редактирования между термином запроса и индексированным термином - чем короче расстояние, тем выше оценка. К сожалению, это невозможно в Azure Search.

Azure Search engine выполняет поисковый запрос в два этапа: поиск и подсчет очков.

В процессе поиска поисковые запросы, обработанные lexical analyzer, просматриваются в инвертированном индексе. Документы, содержащие эти условия, возвращаются. Когда вы используете нечеткий поиск, мы расширяем ваш поисковый запрос, добавляя термины из инвертированного индекса, которые находятся в пределах edit distance из заданного условия запроса - нечеткое расширение. Таким образом, ваш запрос может соответствовать большему количеству документов.

Во время подсчета очков мы присваиваем оценку релевантности полученным документам с использованием Lucene scoring formula. Эта формула основана на TF/IDF. Практически это означает, что документы, которые соответствуют результирующим условиям, будут ранжированы выше в наборе результатов.

Важно знать, что формула подсчета Lucene применима только к документам, которые соответствуют исходным условиям и терминам запроса, добавленным через нечеткое расширение. Документы, в которых согласованные термины, добавленные через расширение префикса или расширение регулярного выражения/подстановочного знака, получают постоянную оценку 1. Таким образом, эти документы будут в наборе результатов, но не будут влиять на ранжирование, основанное на частоте сроков.

Надеюсь, что поможет

Смежные вопросы