アプリケーションのドメイン モデル オブジェクトに変更が加えられたときに Lucene インデックスを最新の状態に保つことについて、人々の考えを知りたいと考えていました。
問題のアプリケーションは、Hibernate を使用する Java/J2EE ベースの Web アプリです。私が現在取り組んでいる方法は、Hibernate マップ モデル オブジェクトがすべて、Lucene に記録されたキーと値のペアのセットを返すことができる共通の「インデックス可能」インターフェイスを実装することです。そのようなオブジェクトを含む CRUD 操作が実行されるたびに、JMS キューを介してメッセージ駆動型 Bean に送信します。メッセージ駆動型 Bean は、Lucene にオブジェクトの主キーと、そのオブジェクトの index( ) メソッドから返されたキーと値のペアを記録します。提供された。
このスキームに関する私の主な懸念は、MDB が遅れて、入ってくるインデックス作成操作に追いつかないか、何らかのエラー/例外がオブジェクトのインデックス作成を停止するかどうかです。その結果、一定期間、または長期間にわたって古いインデックスが作成されます。
基本的に、私は、この種のことに対して他の人がどのような戦略を思いついたのか疑問に思っていました. 必ずしも1つの正解を探しているわけではありませんが、「ホワイトボード」のようなアイデアのリストを想像して、脳に代替案を考えさせています.