0

データベース内:

私は2つのテーブルを持っています。各テーブルには 3 つの列があります。Table_A (column_primaryKey_A,column_A1,column_A2) Table_B (column_primaryKey_B,column_B1,column_B2)

以下は、Lucene を使用して実行したい SQL です: SELECT * FROM Table_A,Table_B WHERE column_primaryKey_A = column_primaryKey_B AND column_A1 = XX AND column_B1 = XX

2 つのインデックス ドキュメント (<strong>Index_Table_A、 Index_Table_A )を作成したいのですが、Lucene または Hibernate Search のメカニズムを使用して上記を実装するにはどうすればよいですか? .

どんな助けでも感謝します!

4

1 に答える 1

1

なぜインデックスが必要なのか、そもそもなぜ lucene を使用したいのかはわかりませんが、1 つのインデックスを使用して実装する方法を説明できます。(2 つのインデックスを使用することは可能ですが、パフォーマンスが大幅に低下します)

1 つのインデックスを使用して、次のように任意のドキュメントにインデックスを付けます。

title = column_primaryKey_A
column_A1 = val...
column_A2 = val2...
column_B1 = val3...
column_B2 = val4...

検索するときは、次のようにフィールド クエリで結合クエリを使用します。

query = (column_A1:XX) AND (column_B1:XX)

lucene クエリ構文の詳細については、こちらを参照してください。

編集: 2 つの検索で構成される別のオプションは、パフォーマンスが低下する可能性があります: 最初の列で最初の検索を行い、対応するすべてのタイトル (id) を収集し、それらを 2 番目のクエリ (2 番目の列) に追加することができます。

Query: (Column_B1:XX) AND ( id1 OR id2 OR ...)

ここで、ID は最初の検索で収集された結果です。

于 2012-09-29T13:13:48.377 に答える