solr中的多值字段仅返回一个项目

时间:2012-09-03 21:09:06

标签: mysql solr multivalue

我是solr的新手,
我有一张这样的桌子

id         infield        body
---------------------------------------------
1           ValX          Article1-Body
1           ValY          Article1-Body
1           ValZ          Article1-Body
2           ValW          Article2-Body
....

我的mysql查询看起来像

select A.id,B.infield, A.body from A inner join B on A.id=B.id;

在schema.xml中我有这个

<field indexed="true" multiValued="true" name="infield" stored="true" type="string"/>

现在当我的查询是*:*时,我应该得到所有内场如下

<str name="id">1</str>
<str name="body">Article1-Body</str>
<arr name="infield">    
   <str>ValX</str>
   <str>ValY</str>
   <str>ValZ</str>
</arr>

但我得到了这个

<str name="id">1</str>
<str name="body">Article1-Body</str>
<arr name="infield">    
   <str>ValX</str>
</arr>

修改
我的dataconfig.xml包含:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
  <dataSource autoCommit="true" batchSize="-1" convertType="true" driver="com.mysql.jdbc.Driver" password="pass" url="jdbc:mysql://127.0.0.1/test" user="root"/>
  <document name="items">
    <entity name="root" pk="id" preImportDeleteQuery="data_source:10" query="select A.id,B.infield, A.body from A inner join B on A.id=B.id;" transformer="TemplateTransformer">
      <field column="data_source" template="10"/>
      <field column="data_source_type" template="Jdbc"/>
      <field column="data_source_name" template="Test"/>
    </entity>
  </document>
</dataConfig>

知道可能出现什么问题? 感谢

1 个答案:

答案 0 :(得分:2)

查询可能会产生多个具有相同ID的记录,因此单独/单独的记录会被覆盖,因为它们具有相同的ID。
所以你最终只得到一个内场价值 对于多值字段,您应将其包含为sub entity which returns multiple values