Solr DIH динамическое имя файла и преобразовать значение - PullRequest
1 голос
/ 31 мая 2011

У меня есть рабочий 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 ]

2 голосов
/ 09 декабря 2011

Не уверен, что у вас есть ответ, но, насколько я понимаю, вам нужно создать несколько вкладок сущностей в документе обработчика данных, по одной для каждого нового многозначного поля, которое вы хотите добавить, и указать идентификатор из корневого документа , Посмотрите на этот пример: В файле 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>

0 голосов
/ 04 июня 2011

я думаю, что могу использовать DIHCustomTransformer для вызова функции, но я пока не уверен http://wiki.apache.org/solr/DIHCustomTransformer

оценят любое просветление

...