2011-10-13 33 views
1

我有这样的“一网打尽”场在我的schema.xml:下面DynamicField名

<dynamicField name="*_s" type="string" indexed="true" stored="true" /> 

在这个例子中可以说我有有2个字段的表:“custom_value”和“custom_key “这些价值观:

custom_key ”的myKey“

custom_value: ”myvalue的“

我的目标是指数,有一个叫做场的文档 ”的myKey“ 和值 ”myvalue的“。我怎样才能做到这一点?

<dataConfig> 
<dataSource type="JdbcDataSource" 
driver="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost/MY_DB" 
user="MYUSER" 
password="MYPASS" 
batchSize="-1"/> 

<document> 
    <entity name="article" query="SELECT id, custom_key, custom_value FROM mytable"> 
     <field column="id" name="id"/> 
     <field column="custom_value" name=":::WHAT TO PUT HERE?:::_s"/> 
    </entity> 
</document> 

回答

1

发现了一个(哈克?)解决方案,这对于我而言的作品,我不会庆祝这个问题进行回答了几天,柜面有人想出了一个更清洁/更好的解决方案。

<dataConfig> 
    <script><![CDATA[ 
      function insertVariants(row)  { 
       row.put(row.get('custom_key') + '_custom', row.get('custom_value')); 
       return row; 
      } 
    ]]></script> 

    <dataSource type="JdbcDataSource" 
driver="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost/MY_DB" 
user="MYUSER" 
password="MYPASS" 
batchSize="-1"/> 

<document> 
    <entity name="article" query="SELECT id, custom_key, custom_value FROM mytable" transformer="script:insertVariants"> 
     <field column="id" name="id"/> 
    </entity> 
</document> 

</dataConfig> 
+1

不是一个hacky的解决方案。这是正确的。 –