2012-05-01 5 views
5

?command = full-importはすべてのドキュメントを処理します。しかし、私は私の /solr/dataimportを実行すると、solr delta importが "フェッチ"しますが、 "処理しません"

(/ Solrの/ dataimport?コマンド=デルタインポート)それが正しく更新されたデータ(戻り「 <str name="Total Rows Fetched">1</str> 『)を識別しますが、それのいずれか(リターン』 <str name="Total Changed Documents">0</str>」)を処理しませんデルタインポートを実行するとデータ-config.xmlが、このようなものになります。

<entity name="category" pk="catID" 
query="SELECT CONCAT('c_',catID) ID, catID, catName FROM category" 
deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM category WHERE catID = '{$dataimporter.delta.catID}'" 
deltaQuery="SELECT catID FROM category WHERE catDate &gt; '${dataimporter.last_index_time}'"/> 

を(ノート - 私の連結のための別々の理由がある)

なぜデルタインポートがフェッチしながら、フルインポート処理を行いますが、処理しませんか?

+0

あなたは「それは何も処理していません」とはどういう意味ですか?明示的なsolr commitコマンドを発行する必要があるのでしょうか? –

+0

solrは更新された - 期間。なぜ完全インポートが自動的にコミットされ、デルタインポートは行われないのですか? mmand/solr/dataimport?command = delta-import&commit = trueまだ動作しません... – YWSW

+0

インデックスに新しい文書が表示されないということは、コミット操作を強制した後でもそれは本当ですか? –

答えて

0

これは、フルインポートがデータベース内のすべてのドキュメントを処理するためです。

デルタインポートでは、最後にインポートした後に変更されたドキュメントのみが処理されます(あなたの場合は、catDateフィールドで指定されます)。

たとえば、2012-09-09 12:15:38に完全インポートを実行したとします。

次に、2012-09-09 12:15:38にデルタインポートを実行します。 catDate> '2012-09-09 12:15:38'のドキュメントのみ処理されます。

デルタインポートは毎回完全インポートを行うことなく、常に変化するインデックスを維持する方法です。

+0

ありがとうございます。しかし、問題は、デルタインポートが何もインポートしていないということでした – YWSW

0

あなたのケースでは、デルタクエリは正常に動作しますが、デルタインポートクエリは失敗します。

これは、あなたが与えられているので、

deltaImportQueryは= "CONCAT( 'C _'、CATID)ID、CATID、catNameカテゴリからCATID = '{$ dataimporter.delta.catID}'を選択" であります

しかし、それは次のように与えられるべきである、

deltaImportQuery = "カテゴリからCONCAT(C '_'、CATID)ID、CATID、catNameを選択WHERE CATID = '$ {dataimporter.delta.catID}'"

5

'{$dataimporter.delta.catID}'ここでは、catIDはフィールド定義のname属性の値にする必要があります。私は同じ問題を抱えていて、参照された変数がフィールド名であることに気づきました。

1

私は同じ問題を持っていたとdeltaImportQueryは大文字と小文字が区別されることを考え出し

は、 "ID"

deltaImportQuery = "一時からID、状態、名前、場所、都市を選択しIDとしての私のID列を作った = '$ {dih.dID_ID}

関連する問題