2012-01-23 4 views
2

私はLucene 3.5.0を使用して、私のウェブサイトでいくつかの基本的な検索をしています。私はMySQLのデータベースのJDBCディレクトリにインデックスを格納したいと思います。コンパスプロジェクトを使ってこれを行うつもりだったが、もっと多くの研究と実際にコードを試してみると、コンパスは死んだプロジェクトであり、もはや現在のバージョンのLuceneと互換性がないことがわかった。Lucene JDBCディレクトリ

インデックスをJDBCディレクトリに保存する別のオプションはありますか? Luceneがこのネイティブを提供しない理由はありますか?何らかの理由でHDDをより良い方法で保管していますか? FAQから

+0

JDBCディレクトリとは何ですか?なぜそれをDBに入れたいのですか? –

+0

JDBCディレクトリは、コンパスがインデックスを格納するためにデータベースにテーブルを作成するために使用する方法です。正直なところ、私はそれがより簡単になると思うので、私はそれを働かせることができない以外にアプローチしたい、それはインデックスデータベースを格納するための最良の場所は、データベース自体にあるようです。ディレクトリがより良い選択肢であれば、私はそうでないと確信することができます。 – ryandlf

+0

ああ、私は誤解しました。ありがとう。しかし、どのように簡単になるか分からない。また、DBのインデックスや操作は、異なるタイプの問題に合わせてチューニングされているようです。 –

答えて

1

のLuceneは、箱から出してその機能をサポートしていませんが、いくつかの人々はJdbcDirectory'sを実施しています。これまでの報告では、そのような実装によるパフォーマンスはあまり良くないと示していますが、実行可能です。

もう1つの方法として、インデックスをデータベースにBLOBとして格納する方法があります。これは、アプリケーションを実行するノードが複数ある場合に便利です。 BLOBにタイムスタンプを追加すると、各ノードはインデックスが更新されたかどうかをチェックし、インデックスファイルをDBから再作成できます。

+0

インデックスをBLOBとして保存する方法の例については気になりませんか?私は以前これをやったことがなく、Luceneから実装する方法は知らない。 – ryandlf

+0

@ryandlf http://stackoverflow.com/questions/939673/how-is-a-blob-column-annotated-in-hibernate with hibernateを使用すると、ファイルを読み込んで内容をバイト配列に格納するだけです。 – stacker

+0

わかりました。それほど簡単ではないかもしれませんが、私はそれを調べます。 Luceneは、データベースを索引付けするたびに多数の異なるファイルを作成します。 – ryandlf