6

私の Solr データ ソースは、主キーが複合 (つまり、2 つのフィールド) である SQL データベースです。

これはメインの DIHqueryでは問題ありません。フィールドを連結するだけで、それが Solr の主キーになります。ただし、ドキュメントからは、これをサポートするためにデルタ インポート クエリを作成する方法が不明です。

ドキュメントは、変更された行の主キーを見つけるためのクエリと、それらの各キーに対応する個々のドキュメントを実際に取得するためのクエリの 2 つが必要であることを示唆しています。ただし、複合キーについてこれを示す例はありません。

理想的queryには、これら 2 つの個別のクエリはまったく必要ありません。これら 2 つのクエリを単純に組み合わせて、との唯一の違いが に基づいてフィルタリングdeltaQueryする句である場合、データベースの負荷が少なくなります。WHERElast_changed

したがって、私のメインqueryが次の場合:

SELECT key1 || key2 as pk FROM table

関連するdeltaQuery(および/またはdeltaImportQuery) はどのように見えますか?

句を追加しようとしましたWHEREが、クエリが実行された後、不足しているという警告が表示されdeltaImportQuery、次にヌルポインター例外が発生しました。

4

3 に答える 3

0

deltaQuery を「select 1」に設定すると、deltaImportQuery がトリガーされます。次に、where 句に「${dataimporter.last_index_time}」を指定して deltaImportQuery を記述します。

so deltaQuery="select 1" deltaImportQuery="select * from a_table where lastUpdated > '${dataimporter.last_index_time}'"

于 2012-02-24T11:33:04.313 に答える
-1

deltaImport には 2 つのクエリがあります。最初の 1 つ (deltaQuery) は、インデックスを作成する対象を決定するためのものです。たとえば、インデックスを作成する必要がある ID を定義できます。もう 1 つは、この ID からデータを判別するためのものです。私の例を見てください。

<entity name="address" pk="address_id" query="SELECT * FROM address a" deltaImportQuery="SELECT * FROM address a where a.address_id > ${dataimporter.delta.id}"
            deltaQuery="select address_id as id from address where address_id=101010">

deltaImportQuery の重要な部分は ${dataimporter.delta.id} です。これは、id を deltaQuery から deltaImportQuery に設定する方法です。

于 2009-12-23T08:50:52.683 に答える