0

我在搜索两个数据源时遇到问题。当我 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"/>

什么是问题?谢谢

4

1 回答 1

1

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

选择 A.*,“艺术家_”|| 艺术家 A 的 ID PRIMARY_ID

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

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

于 2012-07-12T11:11:12.287 回答