Solr DIH为列导入多个值

时间:2014-02-03 23:19:29

标签: sql-server-2008 solr solr4 dataimporthandler

我正在使用DIH从数据库导入各种字段。 sql查询返回以下数据

    |COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 |
    ------------------------------------------------------------------
    |val1 |val2  |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1 |
    |val1 |val2  |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val2 |

<field name="Col10" type="int" indexed="true" stored="true" default="0" multiValued="true"/>

当我运行完全导入时,所有行都被处理,但是当我查看数据时,我看到Solr中只有一行。我理解这是因为唯一的Id(Col1)。但我不确定为什么col10不存储从我的查询返回的多个值。

我需要做什么才能将值存储为多值/​​数组?

由于

2 个答案:

答案 0 :(得分:1)

您可能需要使用Transformer从Col10中获取更多值,

<entity name="foo" transformer="RegexTransformer" query="select ...">
   <field name="Col10" splitBy=","/>
</entity>

答案 1 :(得分:1)

另一方面,如果col10在多行中,则jsp的SQL查询返回多个值,因为唯一的id是col1

|COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 |
------------------------------------------------------------------
|val1 |val2  |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1 |
|val1 |val2  |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val2 |

或许调整SQL以产生以下结果,然后使用RegexTransformer作为Kevin建议。

|COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 |
------------------------------------------------------------------
|val1 |val2  |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1, multi-val2|

当然,基于DIH组合多值字段的方法不止一种。一个替代的例子:

<entity name="cols" query="Select * From col1_9_table">
    <entity name="col10" query="Select col10 From col10_table 
                                Where Id='${col1_9_table.Id}'">  
     <field column="col10" name="col10"/>
    </entity>
</entity>