2012-05-11 4 views
0

데이터베이스에서 데이터를 인덱싱하려고합니다. 나는 그것을 성공적으로하고있다. 그러나 나는 문제가있다. 전체 데이터베이스에 하나의 인덱스를 사용하고 싶습니다. 모든 db 테이블에는 같은 이름을 가진 적어도 3 개의 열이 있습니다 (나는 이와 같이되고 싶습니다). 예를 들어 회원, 신입 회원, 서적, 저널 및 CD 등이 있습니다. 이 모든 것들에는 id, model, biog라는 컬럼이 있습니다. 따라서 모든 db 테이블에서 id (자동 증가)는 1부터 시작합니다. 필터 (fq = model : journal)를 사용하여 Solr에 쿼리 할 때 아무 것도 반환하지 않습니다. 책을 쿼리하면 일부 데이터가 반환됩니다 (5 행이 있고 2를 반환합니다. 모든 행을 검색하기 위해 :을 사용하고 있습니다). 데이터가 Solr의 "데이터"파일에 있다는 것을 알고 있습니다. 나는 어떤 종류의 갈등이 있다고 생각합니다. 충돌없이 이러한 모든 테이블에 대해 하나의 인덱스를 만들 수 있습니까?데이터베이스에서 데이터 인덱싱

데이터-config.xml 파일 :

<?xml version="1.0" encoding="utf-8"?> 

<dataConfig> 

    <dataSource type="JdbcDataSource" 
       driver="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://127.0.0.1:3306/rental" 
       user="root" 
       password="1a2b3c4d"/> 

    <document> 

    <entity name="members" pk="id" transformer="HTMLStripTransformer" query="select id, firstname, lastname, biog, model from members"> 
     <field column="id" name="id" /> 
     <field column="firstname" name="firstname" stripHTML="true" /> 
     <field column="lastname" name="lastname" stripHTML="true" /> 
     <field column="biog" name="biog" stripHTML="true" /> 
     <field column="model" name="model" stripHTML="true" /> 
    </entity> 

    <entity name="new_members" pk="id" transformer="HTMLStripTransformer" query="select id, firstname, lastname, biog, model from new_members"> 
     <field column="id" name="id" /> 
     <field column="firstname" name="firstname" stripHTML="true" /> 
     <field column="lastname" name="lastname" stripHTML="true" /> 
     <field column="biog" name="biog" stripHTML="true" /> 
     <field column="model" name="model" stripHTML="true" /> 
    </entity> 


    <entity name="books" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from books"> 
     <field column="id" name="id" /> 
     <field column="title" name="title" stripHTML="true" /> 
     <field column="description" name="biog" stripHTML="true" /> 
     <field column="model" name="model" stripHTML="true" /> 
    </entity> 


    <entity name="journals" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from journals"> 
     <field column="id" name="id" /> 
     <field column="title" name="title" stripHTML="true" /> 
     <field column="description" name="biog" stripHTML="true" /> 
     <field column="model" name="model" stripHTML="true" /> 
    </entity> 


    <entity name="cds" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from cd"> 
     <field column="id" name="id" /> 
     <field column="title" name="title" stripHTML="true" /> 
     <field column="description" name="biog" stripHTML="true" /> 
     <field column="model" name="model" stripHTML="true" /> 
    </entity> 

    </document> 
</dataConfig> 

의 schema.xml (필드) :

<fields> 
    <field name="id" type="string" indexed="true" stored="true" /> 
    <field name="model" type="text_en" indexed="true" stored="true" /> 
    <field name="firstname" type="text_en" indexed="true" stored="true"/> 
    <field name="lastname" type="text_en" indexed="true" stored="true"/> 
    <field name="title" type="text_en" indexed="true" stored="true"/> 
    <field name="biog" type="text_en" indexed="true" stored="true"/> 
</fields> 
<uniqueKey>id</uniqueKey> 
<defaultSearchField> biog </defaultSearchField> 

답변

2

당신의 uniqueKey 정말 고유하지 않습니다, 당신은 가지고 각각의 개체가 필요합니다 예를 들어 책의 경우 ID에 다른 것을 추가하는 것이 쉬운 방법 중 하나입니다.

query="select CONCAT('b-',id) as id,..." 

이 책자 ID는 다른 접두어가있는 다른 표에 대해 동일하게 수행합니다.

관련 문제