3

NHibernate (または Hibernate) Search が「データベース/インデックスの同期を処理する」という趣旨のステートメントをオンラインでいくつか見ました。

これらのステートメントを読んだとき、 「...すべてのデータ アクセスに [N] Hibernate を使用している限り」という暗示があるのではないかと思わずにはいられません。

別のアプリケーションによって完全に所有されているデータベースに対する読み取り専用データ アクセス レイヤーとして NHibernate を使用しているため、アプリケーションは外部書き込みを直接認識しません。

Hibernate/NHibernate Search は実際に生データへの変更を監視するために何かを行いますか?たとえば、クエリ通知を設定したり、全体または部分的なインデックスに対して存続時間や「有効期限」を採用したりしますか?

それとも、外部アプリケーションによって変更される行が増えるにつれて、Lucene インデックスは徐々に古くなっていくのでしょうか?

このツールがそのような同期を行わない場合、手動でのインデックスの再作成 (適切なタイミングで行うのは非常に困難です) 以外に、Lucene インデックスをデータベースと同期させるために他にできることはありますか?この時点まで行ってきたように、SQL Server のフルテキスト機能を使用するだけでよいでしょうか?

4

1 に答える 1

1

Hibernate Search Documentationから答えを推測できたと思います:

Hibernate Search は、Hibernate Core を介して永続化、更新、または削除されたすべてのエンティティに透過的にインデックスを付けます。ただし、データベースに既に存在するデータの最初の Lucene インデックスを作成する必要があります。

最初のインデックスを作成する必要がある場合、アプリケーションの外部で何らかの変更が行われた場合、そのインデックスも更新する必要があるのは当然のことです。

明らかに、HS/NHS は、SQL Server FTS や Oracle Text などのように、ほとんどすべてのデータ書き込みがセッションを通じて行われる場合を除いて、すぐに解決できるソリューションではありません。

于 2012-01-25T13:34:22.310 に答える