ドキュメントのリストを保持するアプリケーションがあります。これらのドキュメントは、Luceneを使用して索引付けされています。資料のキーワードで検索できます。TopDocsをループして、リレーショナルデータベースのID列に関連する(各Luceneドキュメントの)IDフィールドを取得します。これらすべてのIDから、リストを作成します。IDのリストを作成した後、次のSELECTステートメント(JPA)を実行するデータベースクエリを作成します。
SELECT d From Document WHERE id IN (##list of ID's retrieved from Lucene##)
このドキュメントのリストはビュー(GUI)に送信されます。
ただし、一部のドキュメントは非公開であり、リストに含めるべきではありません。したがって、SELECTクエリには、セキュリティチェックを行うための追加のステートメントがいくつかあります。
SELECT d From Document WHERE id IN (##list of ID's retrieved from Lucene##)
AND rule1 = foo
AND rule2 = bar
しかし今、私は疑問に思っています。Luceneの速度を使用してドキュメントをすばやく検索していますが、それでもSELECTクエリを実行する必要があります。だから私はこれのパフォーマンスを失っています:-(...Luceneにはこのマッピングを行うコンポーネントがありますか?またはこの問題に関するベストプラクティスはありますか?大きなプロジェクトはLuceneの結果をリレーションデータベースにどのようにマッピングしますか?ビューが結果をレンダリングする必要があるためですか?
どうもありがとう!
Jochen