2012-07-12 3 views
0

두 데이터 소스에서 검색하는 데 문제가 있습니다. importAll을 실행하면 모든 레코드 가져 오기가 표시되지만 검색 할 때 내 결과에는 dataSource의 2 레코드 만 포함됩니다. 내 데이터 Config.xml의SOLR 다중 데이터 소스에 대한 인덱스 및 검색

:

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

문제는 무엇인가

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

? 감사합니다.

+0

어떻게 생성되는 ID입니까? 첫 번째 데이터 소스의 레코드를 덮어 씁니까? – Jayendra

+0

어떻게 생성되는 ID입니까? 어떻게 생성되는지 알 수 있습니까? – user1069500

+0

은 쿼리하는 테이블에서 반환 된 ID입니까? ID를 필수 필드로 언급 했으므로이 필드는 채워집니다. 결과에서 id가 반환되는 것을 보시겠습니까? 그렇다면 문자열을 ID에 추가하여 고유하게 만들어 서로 겹쳐 쓰지 않도록하십시오. – Jayendra

답변

1

Solr의 ID는 고유해야합니다.
동일한 ID로 엔터티를 삽입하면 이전 레코드를 덮어 씁니다.
Solr이 레코드를 업데이트하지 않습니다. 레코드를 삭제하고 다시 삽입합니다.
두 레코드가 모두 필요한 경우 고유 한 ID를 정의하십시오.
예 : 아티스트와 faqdata가 id를 앞에 얹어서 아티스트와 faqdata가 서로 덮어 쓰지 않도록하십시오.

SELECT A. *, 'ARTIST_'|| ID PRIMARY_ID FROM ARTIST A

SELECT A. *, 'FAQDATA_'|| ID PRIMARY_ID에서 FAQ 데이터

기본 ID 및 고유 필드로 PRIMARY_ID를 사용하십시오.

관련 문제