2017-07-14 8 views
0

他の2人の学生とプロジェクトを進めています。リモートサービスからインデックスを更新して、Hibernateを検索

  • Javaサービスでは、Webクローラーを使用してWebサイト上の情報を取得し、その結果を独自のデータベースに格納します。このプロジェクトではHibernateを使用していません。

  • J2Eのウェブサイト、達人/春使用して/私たちは、ウェブサイトのデータベースへのWebクローラデータベースからの結果を挿入する、スケジュールされたタスクで

(最初のコード)を休止。

当然のことながら、私たちはこの結果をウェブサイト上で迅速に調査したいと思います!だから私はHibernateSearchを使うことを考えていました。これはすばらしいツールです!

しかし、私は私のケースでそれを使うことができないのですか?私が知る限り、Hibernate検索は(休止状態の)トランザクションのインデックスを更新しています。それがまだ動くかどうか疑問に思っています(休止状態はデータベーストランザクションに気付くでしょうか?)、もしそうでなければ、サービスによって更新を強制するトリックがあれば!

注:

FullTextSession fullTextSession = Search.getFullTextSession(session); 
fullTextSession.createIndexer().startAndWait() 

が、私は本当にドロップ/毎回私は私の挿入を行うインデックスを作成したくない:私はインデックスを作成するための指示がある知っています。

答えて

3

Hibernate Searchは、データベースから内部イベントを聴くことはできません.Hibernate ORMを使用してinsersを実行する場合にのみ自動的にインデックスを更新することができます。

同様のシナリオでHibernate Searchユーザーの一部は、単にMassIndexerを定期的(たとえば毎晩)にトリガーします。あなたのユースケースに応じて、これはうまくいくかもしれません。たとえば、WebアプリケーションがWebショップの場合、挿入後に少し遅れて新しいアイテムが検索結果に表示されるのが普通です。

それはあなたのユースケースのために動作しない場合は、次の2つの選択肢があります:

  • は、検索を休止するイベントを発生させるあなたの挿入トランザクションが
  • HibernateのORMを使用するように手動

A 「手動」索引は、Hibernate ORMを介して新しい要素をロードし、次にFullTextSession.index(entity)を呼び出すことによって実行されます。

+0

ありがとうございます:) MassIndexerをトリガするのが私にとって最も簡単な方法です! –

関連する問題