2012-02-28 10 views
0

私は読み取り専用のデータベーステーブル、つまりデータベースにあるテーブルを検索するためにWebService(SpringとJPAを使用するCXF)を構築しています。読み取り専用データベーステーブルのインデックス検索を構築するにはどうすればよいですか?

このテーブルのいくつかのフィールドの全文検索を実装する必要があります。クエリを実行するには速度が遅すぎます(ブックデータベース、各書籍のタイトル、著者、キーワード)それのための。

私は、Hibernate Searchがそれを手助けするかどうか、そして私がどのようにそれに取り組むことができるかを理解しようとしています。 エンティティが更新されたときにインデックスを作成するとドキュメントに記載されているとは限りません(WebServiceでは決してそうではありません)。しかし、私はすべての用語に慣れていないので、私は事を誤解する可能性があります。

これについては、どのような良い方法がありますか? 私が何をする必要があるのか​​をよりよく理解するためにまず何を勉強すべきですか? ありがとうございます!

答えて

2

私はHibernate Searchがファイルシステム上にインデックスを構築/保持することができるので、あなたの問題に完璧にフィットすると思います。このようにして、データベースは変更されません。すでにJPAを使用している場合、Hibernate Searchを有効にするのは非常に簡単です。基本的には、Hibernate Search jarファイルを取得してプロジェクトに追加し、@Indexedでインデックスを作成したいエンティティと@Fieldでインデックスを作成するフィールドに注釈を付けるだけです。もちろん、それは非常に簡素化されていますが、オンラインドキュメントがあなたを助けるはずです。基礎を説明する初心者のセクションがあります。 http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/

私は休止状態の検索はそれに私を助けている場合を理解しようとしている、と私はそれについて移動できるか - あなたはこれを取得したら、別の解析装置などに深く潜ることができます。ドキュメントが エンティティが更新されたときにインデックスを作成すると言うことはできません(これは決してWebServiceの ケースです)。しかし、私はすべての用語に慣れていないので、私は が物事を誤解する可能性があります。

よく検索すると、自動的にインデックスが更新され、インデックスとデータベースを読み取り/書き込みアプリケーションで同期させることができます。ただし、検索には、初期インデックスを作成するための、または適切と思われるときに手動でインデックスを再構築するためのプログラムAPIもあります。ドキュメントはより多くの例があり、ここでも

EntityManager em = entityManagerFactory.createEntityManager(); 
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em); 
fullTextEntityManager.createIndexer().startAndWait(); 

:そこにそれを行うには、いくつかの方法がありますが、それは限りシンプルにすることができます。始めの例に従って、遭遇する具体的な質問や問題をフォローアップすることをお勧めします。

+0

ちょうど私が必要なもの。どうもありがとう! – elias

関連する問題