Как индексировать атрибуты из ассоциаций?

#indexing #lucene #relationship #hibernate-search

#индексирование #lucene #взаимосвязь #переход в спящий режим -поиск

Вопрос:

Когда я индексирую объекты в своем приложении (используя hibernate search и lucene) Я хотел бы сохранить в индексе некоторые атрибуты ассоциаций объекта. Мне нужно сохранить их в индексе, потому что мне нужно быстрое извлечение этих атрибутов. Каков наилучший подход для этого?

  1. Храните объектные отношения в lucene. Это кажется самым простым и быстрым подходом.
  2. Сохраняйте отношения объектов в базе данных
  3. Храните объектные отношения в чем-то отдельном, например, в быстром хранилище ключ-значение

Есть еще идеи о том, как я могу сохранить набор атрибутов из подмножества объектов из графа объектов моего приложения? Какое решение мне следует использовать?

Ответ №1:

Если вам будут часто нужны атрибуты при извлечении документа, я бы вставил их в индекс. Если их использование будет нечастым, я бы использовал вариант 2 или 3. Если вы знаете, когда они вам нужны, а когда нет, вы можете использовать FieldSelector для управления тем, загружаются ли (или какие) атрибуты.

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