2012-09-03 49 views
0

我在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"/> 

現在,當我的查詢是*:*,我應該得到所有內場西里下文E

 
<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> 

任何想法可能是錯誤的?
謝謝

+0

該文檔發佈到solr(用於索引)是什麼樣的? –

+0

不知道如果我正確地得到了你的問題,但我索引mysql表的文章,這裏內場表示文章本身的類別 – Alaa

+0

@dwhelan:我編輯了這個問題以及...我希望它現在更清晰 – Alaa

回答

2

該查詢可能會生成多個記錄具有相同的ID,因此單獨/單獨的記錄被越過,因爲他們有相同的ID。
所以你最終只得到一個內場價值。
對於多值字段,您應該將其包含爲sub entity which returns multiple values

+0

你是對的,,,多個記錄返回相同的ID,但你可以澄清更多..你是否意味着我必須有嵌套查詢?我已經將我的dataconfig.xml添加到問題中了...我應該更改哪些內容?謝謝 – Alaa

+0

檢查功能實體示例@ http://wiki.apache.org/solr/DataImportHandler#Full_Import_Example – Jayendra