SOLR指数&搜索多个数据源

时间:2012-07-12 08:38:29

标签: mysql search solr indexing datasource

我在搜索两个dataSource时遇到问题。当我importAll时,我看到我的所有记录都被导入但是当我搜索时,我的结果中只有dataSource的2条记录。

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

什么是问题? 感谢

1 个答案:

答案 0 :(得分:1)

Solr中的Ids需要是唯一的 如果插入具有相同ID的实体,则先前的记录将被覆盖 Solr不会更新记录。它删除并重新插入记录 如果您想要两个记录,请定义唯一ID 例如将艺术家和faqdata添加到id,以便艺术家和faqdata不会互相覆盖。

SELECT A. *,'ARTIST_'||来自艺术家的ID PRIMARY_ID

SELECT A. *,'FAQDATA_'||来自FAQDATA A的ID PRIMARY_ID

并使用PRIMARY_ID作为主要ID和唯一字段。