2008-09-17 15 views
7

私は、データベースに対するより良い検索機能の仕組みを検討しています。現在のところ、データベースパフォーマンスを傷つける長期的なクエリを引き起こす大きなボトルネックです。LuceneでDBを検索するにはどうすればよいですか?

私の上司はSolrを調べてほしいと思っていましたが、詳細を見ると、実際にLucene自身と何らかのDB統合メカニズムが必要なようです。

Lucene FAQから、彼らはHibernate SearchCompass、および DBSight をお勧めします。

私たちは現在のテクノロジースタックの背景として、TomcatでまっすぐなJSPを使用しています.Hibernateはなく、他のフレームワークはありません... DB2データベースに対するJava、JSP、

これを考えると、Hibernate Searchは、私たちのシステムに統合するのが少し難しいかもしれませんが、そのような統合後にHibernateを使用するオプションがあればいいかもしれません。

誰かが、適切なツールを選ぶのに役立つこれらのツール(または他の同様のLuceneベースのソリューション)を使用して共有できる経験はありますか?

これはFOSSソリューションである必要があります。理想的には、Luceneをデータベースから自動的に(効率的に)変更することができます。変更があったときにツールに通知する必要はありません(そうでなければ、ソリューションも同様に良いだろう)。また、データベースが1つしかない複数のアプリケーションサーバー(フェールオーバー)があるため、すべてのアプリケーションサーバーからのソリューションをシームレスに使用することが簡単であればよいでしょう。

私は今オプションを検査し続けていますが、他の人の経験を活用することは本当に役に立ちます。

+0

Luceneを組み込んだことはありますか? –

答えて

0

Luceneを検索して純粋なパフォーマンスを向上させるためには、確かに多くの助けになります。気になるものや必要なもののみを索引付けし、あなたは良いものでなければなりません。もしあなたが好きなら、あなたはHibernateやその他の作品を使うことができますが、私はそれが必要とは思わないのです。

+0

お返事ありがとうございます!残念ながら、私は本当にこれらのフレームワークが提供できるものを見たいので、自分の本格的なソリューションをロールバックする必要はありません。 –

0

それは絶対に恒星の解決策でない限り、それは今の私のためのオプションではありませんので、まあ、私がコンパスとの良好な経験を持っていた

2

...、DBSight doesn't meet the FOSS requirementようです。これは、hibernateとの本当に良い統合性を持ち、hibernateとjdbcを通じて行われたデータ変更を、Luceneインデックスに直接反映させることができますが、そのGPSデバイスはhttp://www.compass-project.org/docs/1.2.2/reference/html/gps-jdbc.htmlです。

すべてのアプリケーションサーバーでLuceneインデックスを維持することが問題になることがあります。複数のAppサーバーでdbを更新している場合は、インデックスをすべての変更と同期させておくことで問題が発生する可能性があります。コンパスにはこれを処理するための代替メカニズムが用意されているかもしれません。

Alfrescoプロジェクト(CMS)でもLuceneが使用され、これらの問題の処理に役立つサーバー間のLuceneインデックスの変更をレプリケートするメカニズムがあります。

私は、Hibernate Searchが実際に地面から外れる前にCompassを使用し始めたので、私はそれと比較することはできません。

3

「DBと照合する」と言ったら、どういう意味ですか?

リレーショナルデータベースと情報検索システムは、正当な理由で非常に異なるアプローチを使用します。どのような種類のデータを検索していますか?どのような種類のクエリを実行しますか?

逆インデックスをデータベースの上に実装しようとすると、Compassのように、LuceneのDirectory抽象化をBLOBで実装するという方法は使用しません。むしろ、私はLuceneのIndexReader抽象化を実装します。

リレーショナルデータベースは、インデックスをかなり維持できます。このコンテキストでLuceneがもたらす価値は、分析機能です。これは、非構造化テキストレコードに最も役立ちます。優れたアプローチは、各ツールの強みを活用します。

索引が更新されると、Luceneはより多くのセグメント(追加ファイルまたはBLOB)を作成し、高価な「最適化」プロシージャが使用されるまでパフォーマンスを低下させます。ほとんどのデータベースでは、各インデックスの更新時にこのコストが償却されるため、より安定したパフォーマンスが得られます。

1

LuSql http://code.google.com/p/lusql/を使用すると、JDBCでアクセス可能なデータベースの内容をLuceneに読み込み、検索可能にすることができます。高度に最適化され、マルチスレッド化されています。私はLuSqlの作者であり、来月に新しいプラグイン可能なアーキテクチャで再構築された新しいバージョンが出てくるでしょう。

関連する問題