2012-01-27 13 views
1

私はDIHを使用してSolrのデータベースからデータのインデックスを作成しようとしています。最も簡単なSolrのDIHインデックス

次のようにだから私は2の設定ファイルを変更した:

solrconfig.xml

<requestHandler name="/dataimport" 
    class="org.apache.solr.handler.dataimport.DataImportHandler"> 
<lst name="defaults"> 
    <str name="config">data-config.xml</str> 
</lst> 
</requestHandler> 

データ-config.xmlの

<dataConfig> 
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="****"/> 
    <document> 
     <entity name="source_scellee" query="select * from source_scellee"> 
     </entity> 
    </document> 
</dataConfig> 

source_scelleeがあることを私のテストデータベース上の私のテーブルの名前。それは多くのフィールドを含んでいます。

明らかに、私は簡単なテスト以外は何も実行しようとしていません。サーバーのログには何の警告もエラーのほかに

<str name="Full Dump Started">2012-01-27 12:27:01</str><str name="">Indexing completed. Added/Updated: 4 documents. Deleted 0 documents.</str><str name="Committed">2012-01-27 12:27:02</str> 
<str name="**Total Documents Failed**">4</str> 

http://localhost:8983/solr/dataimport?command=full-import&clean=false&commit=trueを実行しているとき、私は、次の結果を取得します。 4はテーブル "source_scellee"内のレコード数です。しかし、それはすべての文書が失敗すると言います。

http://localhost:8983/solr/admin/ からクエリを実行した場合、結果はまったく表示されません。どうすれば解決できますか? ( ""には結果が表示されません)

ありがとうございました!

----編集--- は私のschema.xmlにこれらの行を追加しました:

<field name="ID" type="int" indexed="true" stored="true" /> 
    <field name="reference_catalogue" type="string" indexed="true" stored="true"/> 
    <field name="reference_capsule" type="string" indexed="true" stored="true"/> 
    <field name="organisme_certificateur" type="string" indexed="true" stored="true" /> 
    <field name="reference_certificat" type="string" indexed="true" stored="true" /> 
    <field name="duree_d_utilisation" type="string" indexed="true" stored="true" /> 
    <field name="activite_nominale" type="string" indexed="true" stored="true"/> 
    <field name="activite_minimale" type="string" indexed="true" stored="true"/> 
    <field name="activite_maximale" type="string" indexed="true" stored="true"/> 
    <field name="coffret" type="boolean" indexed="true" stored="true"/> 
    <field name="dispositif_medical" type="boolean" indexed="true" stored="true"/> 
    <field name="forme_speciale" type="boolean" indexed="true" stored="true" /> 
    <field name="exemption_cpa" type="boolean" indexed="true" stored="true"/> 
    <field name="marquage_ce" type="boolean" indexed="true" stored="true"/> 
    <field name="element_cible" type="boolean" indexed="true" stored="true"/> 

結果はまだ同じであるしかし:照会は結果が(私はSolrのを再起動しようとしません、

<document> 
     <entity name="source_scellee" query="select * from source_scellee"> 
      <field column="ID" name="ID_i" /> 
      <field column="reference_catalogue" name="reference_catalogue_s" /> 
      <field column="reference_capsule" name="reference_capsule_s" /> 
      <field column="organisme_certificateur" name="organisme_certificateur_s" /> 
      <field column="reference_certificat" name="reference_certificat_s" /> 
      <field column="duree_d_utilisation" name="duree_d_utilisation_s" /> 
      <field column="activite_nominale" name="activite_nominale_s" /> 
      <field column="activite_minimale" name="activite_minimale_s" /> 
      <field column="activite_maximale" name="activite_maximale_s" /> 
      <field column="coffret" name="coffret_b" /> 
      <field column="dispositif_medical" name="dispositif_medical_b" /> 
      <field column="forme_speciale" name="forme_speciale_b" /> 
      <field column="exemption_cpa" name="exemption_cpa_b" /> 
      <field column="marquage_ce" name="marquage_ce_b" /> 
      <field column="element_cible" name="element_cible_b" /> 
     </entity> 
    </document> 
:とすべてのも)、インデックスを再し

------第二編集--- 私はダイナミックインポート が今私のデータ-config.xmlにはこのようになります試してみました

答えて

1

1)あなたは今すぐインデックス化されているどのくらいのドキュメントを参照するには統計ページに見てとることができますが、それはだから、 http://localhost:8983/solr/admin/stats.jsp

2)検索結果は、あなたのschema.xmlに依存しますどのように文書が索引付け/格納されるか、処理されるフィールドと、照会時に検索がどのように処理されるかを定義します。 このファイルを参照するか、schema.xmlのフィールド定義とテーブルsource_scelleeのschema/designを投稿してください。 列とフィールドの名前は同じですか? coulmnameとfilednameが同じである場合、これは動作するはずです、::

//編集

<document> 
     <entity name="source_scellee" 
       pk="ID" 
       query="select * from source_scellee"> 

     </entity> 
    </document> 

は、問題のデータでNULL値を持つのか?

宛先フィールドによって異なります。

あなたの走っているソルは、あのような気分になっていますか? catalina.outなどのJava EE Con​​tainerの出力を見てください。

+0

thx、私の質問を編集してください。 – zg2pro

+0

テーブルカラムIDがソルフィールドID_iにマッピングされているように見えますが、IDのID_iにはファイル定義がありません。 RDBMS ColumnnamesとSolr-Filed-Namesが同じ場合、data-config.xmlのフィールドをマップする必要はありません。私の編集を見てください。ちなみに:IDは一意です:あなたのフォーカスがフルテキスト検索を使用している場合は、フィールドを格納する必要はありません –

+0

したがって、フィールド型を自分のフィールドに動的に割り当てるには、列名の名前を_i RDBMSの_sですか? IDは固有です。はい。 – zg2pro

0

DIHがどのようにフィールドをマップしようとしているかに問題があると確信しています。あなたのスキーマファイルから情報を追加していただきありがとうございます...しかし、あなたがしたことは、DIHのschema.xmlとdata-config.xmlの両方に個別に追加する必要のある設定が追加されたことだと思います。

Solr WikiのFull Import Exampleに基づいて、私は次のことを試してみましょう。

のschema.xml

<field name="ID" type="int" indexed="true" stored="true" /> 
<field name="reference_catalogue" type="string" indexed="true" stored="true"/> 
<field name="reference_capsule" type="string" indexed="true" stored="true"/> 
<field name="date_de_creation" type="date" indexed="true" stored="true"/> 
<field name="organisme_certificateur" type="string" indexed="true" stored="true" /> 
<field name="reference_certificat" type="string" indexed="true" stored="true" /> 
<field name="duree_d_utilisation" type="string" indexed="true" stored="true" /> 
<field name="activite_nominale" type="string" indexed="true" stored="true"/> 
<field name="activite_minimale" type="string" indexed="true" stored="true"/> 
<field name="activite_maximale" type="string" indexed="true" stored="true"/> 
<field name="coffret" type="int" indexed="true" stored="true"/> 
<field name="dispositif_medical" type="int" indexed="true" stored="true"/> 
<field name="forme_speciale" type="int" indexed="true" stored="true" /> 
<field name="exemption_cpa" type="int" indexed="true" stored="true"/> 
<field name="marquage_ce" type="int" indexed="true" stored="true"/> 
<field name="element_cible" type="int" indexed="true" stored="true"/> 

データ-config.xmlの

<dataConfig> 
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="****"/> 
    <document> 
     <entity name="source_scellee" query="select * from source_scellee"> 
      <field column="ID" name="ID"/> 
      <field column="reference_catalogue" name="reference_catalogue"/> 
      <field column="reference_capsule" name="reference_capsule"/> 
      <field column="date_de_creation" name="date_de_creation"/> 
      <field column="organisme_certificateur" name="organisme_certificateur"/> 
      <field column="reference_certificat" name="reference_certificat"/> 
      <field column="duree_d_utilisation" name="duree_d_utilisation"/> 
      <field column="activite_nominale" name="activite_nominale"/> 
      <field column="activite_minimale" name="activite_minimale"/> 
      <field column="activite_maximale" name="activite_maximale"/> 
      <field column="coffret" name="coffret"/> 
      <field column="dispositif_medical" name="dispositif_medical"/> 
      <field column="forme_speciale" name="forme_speciale"/> 
      <field column="exemption_cpa" name="exemption_cpa"/> 
      <field column="marquage_ce" name="marquage_ce"/> 
      <field column="element_cible" name="element_cible"/> 
     </entity> 
    </document> 
</dataConfig> 

それはいくつかを使用することにより発生したのschema.xmlを動的にフィールドを追加するように設定する方法があります命名規則。詳細については、Solr WikiのDynamic Fieldsの詳細と、これを実行する方法の例を参照してください。

+0

はい、私はschema.xmlとdata-config.xmlの間のこのマッピングに苦労しています...しかし、まだそれを動作させることはできません:S 私はこれも上記のソリューションを試してみました、私のデータベースからいくつかのフィールドを削除しようとしました= D ダイナミックフィールド機能を試すために、テーブルフィールドの名前をサフィックスに変更します。 Thx – zg2pro

+0

単純なままで、テーブル、ID、参照カタログ(またはIDと単純な文字列フィールド)の最初の2つの列をデータにのみ定義して選択して索引付けすると-config.xmlファイル?あなたのデータに問題がある可能性があるので、トランスフォーマー(http://wiki.apache.org/solr/DataImportHandler#Transformer)を使用して、ソルバーフィールドに入るデータをマッサージする必要があります。 –

+0

はデータにNULL値を持っていますか? – zg2pro

関連する問題