только что скомпилировал некоторые, как мы надеемся, основные вопросы относительно схем.
Моя ситуация: ранее был многоядерный экземпляр solr, каждое ядро которого содержало свою структуру документа. Хотя информация в документах в одном ядре была связана с документами в других разных ядрах, конкретные правовые ограничения заставляли нас разбирать эти данные в отдельных случаях. Поэтому каждый раз, когда отправлялся запрос к экземпляру solr, запрашивалось несколько ядер, и клиентское приложение «объединяло» и структурировало ответы нескольких отдельных ядер. Для примера: предположим, что мы были музыкальным магазином и, как это ни глупо, у нас было ядро для компакт-дисков, ядро для DVD, ядро для лент и т. Д., У каждого из которых была своя собственная схема; а затем, когда сотрудник проверил запас, все эти ядра вернули свои ответы для приложения на компьютере сотрудника, чтобы прочитать, обработать различные структуры и представить результаты в виде единого списка.
Что ж, юридические ограничения были сняты, и теперь мы объединяем ядра, в значительной степени полагаясь на динамические поля для гибкости схемы. Это, однако, приносит много новых проблем, а также несколько сомнений:
1 - Что лучше: иметь меньшее количество документов, каждое из которых содержит огромное количество полей (мы говорим сотни, иногда тысячи здесь или там, все проиндексированы), или вместо этого разбрасывать информацию в нескольких небольших документах? Исходя из того, что я читал в теории, первый подход был бы целесообразным, но я не думаю, что в каком-либо из случаев рассматривалось такое количество полей.
2 - Можно ли выполнить какой-либо реляционный поиск? Я имею в виду что-то вроде следующих документов:
<doc>
<ID>ALB@1234</ID>
<artist_t>Metallica</artist>
<album_t>Saint Anger</album>
</doc>
<doc>
<ID>PROD@12</ID>
<AlbID>ALB@1234</AlbID>
<format_t>CD</format_t>
<price_m>8.99</price_m>
</doc>
<doc>
<ID>PROD@13</ID>
<AlbID>ALB@1234</AlbID>
<format_t>MP3</format_t>
<price_m>3.99</price_m>
</doc>
и после поиска Metallica все три документа были найдены? Имейте в виду, что подход к сохранению информации о двух последних документах в первом как многозначном на самом деле не вариант, потому что, насколько я знаю, не будет никакого способа p.e. поиск правильного формата, соответствующего поиску диапазона по цене.
3 - В качестве альтернативы, возможно ли определить какую-либо структуру поддокумента как часть документа, как в многоуровневом документе? Опять же, я не имею в виду многозначные или многозначные поля, поскольку, насколько я знаю, они не подходят для более сложной и структурированной информации. Было
думать о чем-то вроде:
<doc>
<ID>ALB@1234</ID>
<artist_t>Metallica</artist>
<album_t>Saint Anger</album>
<formats>
<format_x><ID>PROD@13</ID><AlbID>ALB@1234</AlbID><format_t>MP3</format_t><price_m>3.99</price_m></format_x>
<format_x><ID>PROD@12</ID><AlbID>ALB@1234</AlbID><format_t>CD</format_t><price_m>8.99</price_m></format_x>
</formats>
</doc>
4. Следует учитывать: конечно, эту ситуацию можно исправить, смоделировав схему, как описано в 2), и выполнив более одного запроса к серверу, но на самом деле это не самое желаемое решение.
Ждем любого комментария или предложения. Избиение немного менее приветствуется, но все же приемлемо, просто будь осторожен со мной. ;) И я извиняюсь, если эти вопросы звучат глупо, но здесь действительно нужна помощь.