5

/solr/dataimport?command=full-import を実行すると、すべてのドキュメントが処理されます。しかし、デルタ インポート (/solr/dataimport?command=delta-import) を実行すると、更新されたデータは正しく識別されます (" <str name="Total Rows Fetched">1</str>" が返されます) が、データはまったく処理されません (" <str name="Total Changed Documents">0</str>" が返されます)。

私の data-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}'"/>

(注 - 私の連結には別の理由があります)

デルタ インポートがフェッチされても処理されないのに、フル インポートが処理されるのはなぜですか?

4

4 に答える 4

5

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

于 2012-10-18T12:39:18.510 に答える
0

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

差分インポートは、あらゆる種類の最後のインポート以降に変更されたドキュメントのみを処理します (この場合、 catDate フィールドによって指示されます)。

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

次に、2012 年 9 月 10 日 12:15:38 に差分インポートを実行します。catDate > '2012-09-09 12:15:38' を持つドキュメントのみが処理されます。

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

于 2012-09-09T14:38:22.397 に答える
0

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

これはあなたが与えたからです。

deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM カテゴリ WHERE catID = '{$dataimporter.delta.catID}' "

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

deltaImportQuery="SELECT CONCAT('c_',catID) ID, catID, catName FROM カテゴリ WHERE catID = '${dataimporter.delta.catID}' "

于 2012-10-05T05:33:09.077 に答える