2012-01-27 18 views
3

sqliteデータベースの一括インポートを実行するようにsolrを説得しようとしています。私はDataImportHandlerがjdbcを通してそのデータベースを正常に開くように設定しました。そして、私はwget http://localhost:8080/solr/dataimport?command=full-importでインポートを開始できますが、私が何をしても、solrは最初の499文書(wget http://localhost:8080/solr/dataimport?command=statusによって報告されたもの)のみを索引付けしているようです。DataImportHandlerはエラーを報告しませんが、完了しません

桟橋ログファイルにエラーメッセージが表示されません。代わりに、インデックスの終了を報告します:

27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.SolrWriter readIndexerProperties 
INFO: Read dataimport.properties 
27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.SolrWriter persist 
INFO: Wrote last indexed time to dataimport.properties 
27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.DocBuilder execute 
INFO: Time taken = 0:0:1.145 

私は間違って何ができましたか?

+0

data-config.xmlファイルを投稿できますか? – Evan

+0

これはdata-config.xmlファイルまたはschema.xmlファイルの問題です –

答えて

3

私は自分の質問に答えるのはあまり良い味ではないことを知っていますが、このエラーの原因となった厄介な問題を最終的に解明しました。

特定のデータソースのためのSolrを構成するために使用されるディレクティブはこれです:デフォルトで

<dataSource type="JdbcDataSource" driver="org.sqlite.JDBC" url="jdbc:sqlite:/foo.db"/> 

、JdbcDataSourceクラスは、このXMLノードのバッチサイズ属性を読み取り、指定しない限り500に設定することを前提としています。したがって、上記は実際に同等であった:今

<dataSource type="JdbcDataSource" ... batchSize="500"/> 

、JdbcDataSourceはバッチサイズは、基礎となるJDBCドライバのsetFetchSizeメソッド(この場合、SQLiteのJDBCドライバ)に渡します。このドライバは、このメソッドが実際には返される行数を制限するよう要求しているので、この場合は500行を超えることはありません。 JDBC APIの予想されるセマンティクスに十分慣れていないため、この値を解釈する方法が間違っているsqliteドライバか、ドライバがどのように考えられるかに間違ったsolder JdbcDataSourceクラスかどうかを判断できませんこのメソッド呼び出しに反応します。

しかし、sqlite jdbcドライバは値0を前提としているため、batchSize = "0"を指定することが修正されています。私はこのヒントを対応するsolr FAQページに追加しました。

関連する問題