1

私はDIHで作業しているsolrを持っています。solrインデックス付きドキュメントとの1対多の関係である複数の行を追加する必要があります

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

誰でもこれを行う方法を知っていますか?

4

2 に答える 2

2

まだ回答があるかどうかはわかりませんが、追加する新しい複数値フィールドごとに 1 つずつ、データ ハンドラー ドキュメントに複数のエンティティ タブを作成し、ルート ドキュメントから 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,DateFormatTransformer,TemplateTransformer">
        <field column = "features" />

    </entity>
    </entity>
</document>

于 2011-12-09T16:34:19.093 に答える
0

DIHCustomTransformer を使用して関数を呼び出すことができると思いますが、まだわかりません http://wiki.apache.org/solr/DIHCustomTransformer

どんな啓発も高く評価されます

于 2011-06-04T02:25:35.453 に答える