Множественный или единственный индекс в Lucene?

Мне нужно индексировать различные типы данных (текстовые документы, сообщения форума, данные профиля пользователя и т.д.), которые необходимо искать вместе (т.е. один поиск будет возвращать результаты разных типов данных).

  • Каковы преимущества и недостатки наличия нескольких индексов, по одному для каждого типа данных?

  • И преимущества и недостатки наличия единого индекса для всех видов данных?

Спасибо.

Ответ 1

Если вы хотите искать все типы документов с одним поиском, лучше, чтобы вы все типы к одному индексу. В индексе вы можете определить более полевой тип, который вы хотите использовать для Tokenize или Vectore. Требуется время, чтобы представить каждому IndexSearcher каталог, содержащий индексы.

Если вы хотите искать условия отдельно, лучше индексировать каждый тип по одному индексу. единичный индекс является более структурным, чем несколько индексов.

В другой руке мы можем сбалансировать нашу загрузку с помощью нескольких индексов.

Ответ 2

Не обязательно отвечать на ваши прямые вопросы, но...;)

Я бы пошел с одним индексом, добавил поле типа Keyword (проиндексированное, сохраненное) для типа, оно позволит вам фильтровать, если необходимо, а также указать разницу между результатами, которые вы получили.

(и, возможно, в духе ваших вопросов... с использованием отдельных индексов позволит каждому корпусу иметь собственный рейтинг релевантности, не знаю, будут ли излишне повторяющиеся термины в одном корпусе сбросить релевантность документов в других?)

Ответ 3

Вы должны логически рассуждать о том, что содержит каждый набор данных и разрабатывать ваши индексы по предмету или другим критериям (например, география, бизнес-единица и т.д.). Как правило, ваша архитектура индекса похожа на то, как вы делали базы данных (вы, вероятно, не могли бы совмещать учет с персональной базой данных, даже если это технически возможно).

Как отметил @llama, создание единого индекса uber влияет на оценки релевантности, проблемы безопасности/доступа, среди прочего, и вызывает целый новый набор головных болей.

Вкратце: подумайте о логической структуре секционирования в зависимости от потребностей вашего бизнеса. Было бы трудно объяснить без дальнейших предпосылок.