Скажем, я хочу индексировать свое использование магазина Solr Lucene.
У меня есть много типов объектов: продукты, Отзывы о продукции, Статьи
Как я заставляю свой Lucene индексировать те типы, но каждый тип с различной Схемой?
Возможно, вы захотите иметь 3 индекса под названием Products, ProductReviews и Articles. Каждый индекс может иметь свою собственную схему. Разница между Lucene и реляционной базой данных заключается в том, что строка в базе данных, грубо говоря, переводится в документ в Lucene. Примечание: каждый документ может иметь свою собственную схему (это еще одно отличие от реляционной базы данных).
В Lucene / Solr каждому документу не нужно устанавливать значение для каждого поля. В рамках той же схемы вы можете иметь набор полей для сущности A и другой набор полей для сущности B и просто заполнять соответствующее поле в зависимости от сущности.
С Solr у вас также есть возможность перейти на многоядерный. У каждого ядра своя схема. Вы можете определить ядро для каждой сущности.
Я рекомендую создать ваш индекс таким образом, чтобы все ваши сущности имели более или менее одинаковые основные поля: title, content, url, uuid, entity_type, entity_sourcename
и т.д. Если каждая из ваших сущностей имеет уникальный набор соответствующих индексных полей, вам будет трудно составить запрос для поиска всех сущностей одновременно, и в представлении результатов может возникнуть беспорядок. Если вам нужны какие-то специфические поля для конкретной сущности, то добавьте их и выполните специальную логику для этой сущности, основанную на ее типе_сущности.
Я говорю по собственному опыту: мы управляем индексом с более чем 10 различными сущностями, и этот подход работает как шарм.
P.S. Еще несколько простых советов.
Многоядерность - это подход, который следует использовать с осторожностью. С такой простой схемой, как у вас, лучше поступать так, как рекомендует buru. Это означает, что нужно найти общие поля между различными сущностями, а затем поля, которые будут использоваться только одной или несколькими из них. Затем вы можете добавить поле "type" или "type_id", которое будет говорить, является ли ваша сущность продуктом, обзором продукта...
Это позволит вам иметь уникальный индекс и быстро обрабатывать запросы.