问题描述
|
我有一个与DIH一起工作的Solr,现在我需要添加多行与Solr索引文档为一对多的关系
TABLE:
ID:int PK
post_id:int FK
name:string
value:text
type:(int|string)
我需要将基于FK(post_id)的所有行插入具有动态名称的solr文档中,并根据类型转换值
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
有人知道该怎么做吗?
解决方法
不确定您是否已经找到答案,但是我的理解是,您需要在数据处理程序文档中创建多个实体标签,为要添加的每个新多值字段创建一个标签,并指出根文档中的ID。看这个例子:
在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,TemplateTransformer\">
<field column = \"features\" />
</entity>
</entity>
</document>
, 我想我可以使用DIHCustomTransformer来调用一个函数,但我不确定
http://wiki.apache.org/solr/DIHCustomTransformer
任何启发将不胜感激