Как оценка и индексирование работают вместе в информационно-поисковых системах - PullRequest
0 голосов
/ 12 июня 2018

У меня есть краткое понимание индексации (обратная индексация) и оценки (например, tf-idf) в IR.Как правило, если индексация отсутствует, предварительно рассчитывается матрица tf-idf, и для запроса создается соответствующий вектор tf-idf, а затем рассчитываются баллы для каждого документа.

Как выглядит этот поток, когда выполняется индексация документов, в частности, как библиотека, такая как Apache Lucene или Terrier, обрабатывает запрос для оценки результатов для документов.

1 Ответ

0 голосов
/ 12 июня 2018

Lucene теперь использует BM25 , который имеет измененный наклон по сравнению со старой практической формулой оценки tf / idf.

Когда вы индексируете документы (помещая их в индекс Lucene), каждыйПоле разбито на токены.Как это происходит и что считается токеном, зависит от определения поля.Например, если вы решите использовать токены на пустом месте и применить фильтр нижнего регистра, значение «Foo Bar» будет сохранено как два токена, foo и bar.Если вы не применяете токенизацию (или не используете KeywordTokenizer) и не применяете никаких фильтров, вы получите один токен - Foo Bar).

Тот же процесс происходит, когда вы делаете запрос.Запрос, отправленный в поле, разбивается на токены и фильтруется в соответствии с правилами для этого поля, поэтому, если вы выполните поиск fOO bAR в приведенном выше примере, запрос будет состоять из двух токенов после обработки: foo и bar.

Оценка для документа затем рассчитывается в соответствии с этими токенами по формуле BM25.Если вы посмотрите на формулу, вы увидите, что счет рассчитывается для каждого токена (q), а затем суммируется, чтобы получить оценку для поля.

BM25 scoring formula from Wikipedia

Если вы добавите debugQuery=true после запроса к Solr, вы получите подробную информацию о том, как именно рассчитывается оценка.

...