Solr DIH динамическое имя файла и преобразовать значение
У меня есть рабочий solr с DIH, теперь мне нужно добавить несколько строк, что является отношением ОДИН к МНОГИМ с индексированным документом solr
TABLE:
ID:int PK
post_id:int FK
name:string
value:text
type:(int|string)
Мне нужно вставить все строки на основе FK (post_id) в Solr Doc с динамическим именем и преобразовать значение на основе типа
SELECT name,value,type FROM TABLE WHERE post_id='${post_entity.id}';
loop
insert into solr fieldname: meta_{$name} value: if type int cast to int else just value
end loop
Кто-нибудь знает, как это сделать?
2 ответа
Не уверен, что у вас есть ответ, но, насколько я понимаю, вам нужно создать несколько вкладок сущностей в документе обработчика данных, по одной для каждого нового многозначного поля, которое вы хотите добавить, и указать идентификатор из корневого документа. Посмотрите на этот пример: в файле DataHandler.xml:
<dataConfig>
<dataSource name="jdbc" driver="org.postgresql.Driver" url="jdbc:postgresql://localhost/bedrock" user="postgres" password="test" batchSize="1000" readOnly="true" autoCommit="false" transactionIsolation="TRANSACTION_READ_COMMITTED" holdability="CLOSE_CURSORS_AT_COMMIT" />
<document name="doc-a">
<entity name="employee-root" datasource="jdbc" pk="id" query ="
select
a.id as id,
a.name as name,
a.dept as dept,
a.jobtitle as jobtitle,
a.last_change as last_change
from employee a
"
transformer="RegexTransformer,DateFormatTransformer,TemplateTransformer">
<field column = "id" />
<field column = "name" />
<field column = "dept" />
<field column = "jobtitle" />
<entity name="employee-hobby" datasource="jdbc" query ="
select
employee_hobby as features
from employee_hobby
where employee_id = ${employee-root.id}
"
transformer="RegexTransformer,DateFormatTransformer,TemplateTransformer">
<field column = "features" />
</entity>
</entity>
</document>
Я думаю, что могу использовать DIHCustomTransformer для вызова функции, но я еще не уверен http://wiki.apache.org/solr/DIHCustomTransformer
любое просвещение будет оценено