Я пытаюсь хранить данные в Solr, чтобы лучше поддерживать индексы. У меня проблема в том, что моя структура данных сильно вложена. Пример:
Company
(to many) Person
(to many) Property
(to many) Network
(to many) SubNetwork
Я пытаюсь создать индекс полнотекстового поиска для каждого SubNetwork
, который будет отображать текущие родительские поля вдоль него.
В настоящее время мои данные полностью денормализованы, например:
{
"company": "Coca-Cola",
"property": "1 plaza hotel",
"network": "ABC",
"subNetwork": "123"
}
Теперь, если пользователь зайдет в приложение и изменит название компании, прямо сейчас (в денормализованном состоянии), это потребует от Solr частичного обновления (атомарного обновления) многих документов, которые не кажутся очень эффективными. , Повторная индексация индекса не является предпочтительным решением, поскольку это мультитенантное приложение.
Я попытался поместить реляционные данные в отдельные индексы, а затем использовал join
в Solr, но это не копирует объединенные поля индексов в конечном результате, что означает, что полнотекстовый поиск по всем полям невозможен.
{!join from=inner_id to=outer_id}field:value
Я пытаюсь настроить Solr таким образом, чтобы при обновлении родительской записи требовалось только одно атомарное обновление, но при этом сохранялась возможность поиска по всем полям. Это возможно?