2012-07-12 134 views
0

我在搜索兩個數據源時遇到問題。當我importAll,我看到所有的記錄導入,但是當我搜索時,我在我的結果中只有dataSource的2條記錄。SOLR索引和在多個數據源上搜索

在我的數據-config.xml中:

<document> 
    <entity name="one" dataSource="ds-1" query="SELECT * FROM artist"> 
    <field column="name" name="name" /> 
    </entity> 

    <entity name="two" dataSource="ds-2" query="SELECT * FROM faqdata"> 
    <field column="thema" name="thema" /> 
    </entity> 
</document> 

而且在我的schema.xml:

<fields> 
<field name="id" type="int" indexed="true" stored="true" required="true" /> 
<field name="slug" type="string" indexed="false" stored="true"/> 
<field name="name" type="text" indexed="true" stored="true" /> 
<field name="alt_name" type="text" indexed="false" stored="true"/> 
<field name="created_at" type="date" indexed="false" stored="true"/> 
<field name="updated_at" type="date" indexed="false" stored="true"/> 
<field name="thema" type="text" indexed="true" stored="true" /> 

<field name="text" type="text" indexed="true" stored="false" multiValued="true"/> 

<dynamicField name="*" type="ignored" multiValued="true" /> 
</fields> 

<uniqueKey>id</uniqueKey> 

<defaultSearchField>text</defaultSearchField> 

<solrQueryParser defaultOperator="OR"/> 

<copyField source="name" dest="text"/> 
<copyField source="thema" dest="text"/> 

是什麼問題呢? 謝謝

+0

如何生成ID?他們是否覆蓋第一個數據源的記錄? – Jayendra 2012-07-12 09:19:14

+0

如何生成ID?我怎麼知道如何生成? – user1069500 2012-07-12 09:25:18

+0

是你正在查詢的表返回的ID?正如你所提到的id是一個必填字段,它正在被填充。你在結果中看到id是否返回?如果是的話,將字符串添加到該ID以使其唯一,以便它們不會互相覆蓋 – Jayendra 2012-07-12 09:39:38

回答

1

Solr中的ID需要是唯一的。
如果您插入具有相同ID的實體,則以前的記錄將被覆蓋。
Solr不更新記錄。它刪除並重新插入記錄。
如果你想要這兩個記錄,定義一個唯一的ID。
例如將藝術家和faqdata添加到ID,以便藝術家和faqdata不會相互覆蓋。

SELECT A. *,'ARTIST_'||編號PRIMARY_ID來自藝術家A

SELECT A. *,'FAQDATA_'|| ID PRIMARY_ID FROM FAQDATA A

並使用PRIMARY_ID作爲主ID和唯一字段。