2012-05-11 5 views
0

データベースからインデックスを作成しようとしています。私はそれを成功させています。しかし、私は問題があります。データベース全体に1つのインデックスを使用したい。すべてのdbテーブルには、同じ名前のカラムが少なくとも3つあります(私はこのようになりたい)。たとえば、私はメンバー、新メンバー、本、雑誌、CDを持っています。これらはすべてid、model、biogという名前の列を持ちます。したがって、すべてのdbテーブルでid(自動インクリメント)は1から始まります。 フィルタ(fq = model:journal)を使用してSolrにクエリを実行すると、何も返されません。書籍を照会するとデータの一部が返されます(5行あり、2を返します)。すべての行を取得するためにを使用しています。私はデータがSolrの「データ」ファイルにあることを知っています。私はある種の紛争があると思う。 これらのテーブルをすべて1つのインデックスにするにはどうすればよいですか?データベースからのインデックスデータ

データ-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は本当にユニークではありません、あなたが持っている各エンティティを必要とします異なるものと比べて、簡単な方法の1つは、例えば書籍の場合のように、IDに何かを追加することです。

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

このようなブックIDは、プレフィックスの異なる他のテーブルについても同じように扱います。

関連する問題