0

2 つの 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"/>

問題とは何ですか?感謝

4

1 に答える 1

1

Solr の ID は一意である必要があります。
同じ ID を持つエンティティを挿入すると、前のレコードが上書きされます。
Solr はレコードを更新しません。レコードを削除して再挿入します。
両方のレコードが必要な場合は、一意の ID を定義します。
たとえば、Artist と faqdata を id の先頭に追加して、artist と faqdata が互いに上書きしないようにします。

SELECT A.*, 'ARTIST_' || アーティスト A の ID PRIMARY_ID

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

PRIMARY_ID をプライマリ ID および一意のフィールドとして使用します。

于 2012-07-12T11:11:12.287 に答える