У меня есть две таблицы: tableA и tableB. Между этими таблицами существует взаимосвязь. Одна строка в таблице А соответствует нескольким строкам в таблице Б. У меня есть запрос:Apache Solr - данные индекса
select aa.id, aa.first_name, aa.last_name, bb.address_home, bb.address_coresp from testA aa, testB bb where aa.id = bb.testA_fk;
, которая возвращает количество строк - 3, например:
1 John Terry HOME 1 CORESP_1
1 John Terry HOME 11 CORESP_11
1 John Terry HOME 111 CORESP_111
Когда я вставить этот запрос в solr`s данные данных config.xml файлов и индексов, то результатом является :
{"address_home": ["HOME 111"],
"address_coresp": ["CORESP_111"],
"id": "1",
"LAST_NAME": "Terry",
"FIRST_NAME": "John",
"_version_": 1513906493806608400
}
Существует только один результат адреса вместо трех.
Фрагмент моих данных-config.xml:
<document name="testDoc">
<entity name="testA" query="select aa.id, aa.first_name, aa.last_name, bb.address_home, bb.address_coresp from testA aa, testB bb where aa.id = bb.testA_fk">
<field column="id" name="id" />
<field column="first_name" name="first_name" />
<field column="last_name" name="last_name" />
<field column="address_home" name="address_home" />
<field column="address_coresp" name="address_coresp" />
</entity>
</document>
и в schema.xml я многозначный установлен верно:
<field name="address_home" type="text_general" indexed="true" stored="true" multiValued="true" /><field name="address_coresp" type="text_general" indexed="true" stored="true" multiValued="true" />
Я знаю, что решение моей проблемы является вложенной сущностью элемент:
<entity name="testA" query="select * from testA">
field definitions...
<entity name="testB" query="select * from testB where testB.a_id = '${testA.id}'">
field definitions...
</entity>
</entity
, но есть ли возможность сделать это в одном запросе. Я хочу, чтобы достичь этого результата:
{"id": "1", "LAST_NAME": "Terry", "FIRST_NAME": "John", "address_home": ["HOME 1","HOME 11","HOME 111"], "address_coresp": ["CORESP_1","CORESP_11","CORESP_111"], "_version_": 1513905361988354000 }
Заранее спасибо
Спасибо за ваш ответ. Solr не распознает мои записи как уникальные, потому что идентификатор был одинаковым для каждой записи. Я тестировал решение с идентификатором из таблицы B, и он не выглядит так, как я хотел. Мне придется использовать вложенные объекты. – problemgenerator