Сходство IDF между осколками не работает должным образом, использует только локальную информацию об осколках - PullRequest
0 голосов
/ 29 июня 2018

Я использую solr (7.3) для своих данных о продуктовых продуктах. Я нашел странные результаты из-за IDF данных на нескольких шардах (3 шарда).

Мое ключевое слово для поиска было "молоко"

Молоко - не совсем редкое ключевое слово в моей коллекции. Но в одном из фрагментов очень мало документов (1-2 документа из 9000), содержащих ключевое слово молоко. Таким образом, в этом осколке (shard1) показатель IDF очень высок, почти в 3 раза больше, чем у других осколков. Что влияет на мой результат. Я не ожидаю, что этот конкретный документ из shard1 будет лучшим результатом.

Есть ли способ контролировать скоринг idf, как мы можем сделать для tf в BM25 с параметрами k1 и b?

Или у нас BM25 без подобия idf? Я могу создать свое собственное сходство и использовать его, но наши сервисы solr не позволяют настраивать solr.

Или есть другой способ решить эту проблему?

1 Ответ

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

Вы можете использовать другой statsCache, чтобы получить поддержку для распределенного IDF . Опция по умолчанию (localStatsCache) использует только значения из локального шарда, но вы можете изменить его на один из распределенных параметров, чтобы Solr использовал вместо IDF всей коллекции при вычислении баллов.

Статистика документов и терминов необходима для расчета релевантности. Solr предоставляет четыре реализации из коробки, когда дело доходит до расчета статистики документа:

LocalStatsCache : используется только локальный термин и статистика документа для вычисления релевантности. В случаях с равномерным распределением сроков по осколкам это работает достаточно хорошо. Эта опция используется по умолчанию, если нет настроено.

ExactStatsCache : эта реализация использует глобальные значения (для всей коллекции) для частоты документов.

ExactSharedStatsCache : Это похоже на кэш точной статистики по своей функциональности, но глобальная статистика повторно используется для последующих запросов с теми же условиями.

LRUStatsCache : эта реализация использует кэш LRU для хранения глобальной статистики, которая распределяется между запросами.

Реализацию можно выбрать, установив в solrconfig.xml. Например, следующая строка заставляет Solr использовать реализацию ExactStatsCache:

<statsCache class="org.apache.solr.search.stats.ExactStatsCache"/>

...