2012-05-03 12 views
0

私はphpとmysqlでWebアプリケーションを構築します。私は3-4の表の全文検索を行っているデータを検索したい。私はそれをlucene solrプロジェクトのために考えています。mysqlで最新のデータを検索する、フルテキストで検索する古いデータとソル

私の質問は: 今日のデータを別のmysqlテーブルに保存しておけば、今日のデータだけを簡単に検索することができます。もしenythingが見つかった場合は、フルテキスト検索のためにluceneデータ(昨日から過去)?

私のWebアプリケーションはmysqlにデータを保存しますが、そのユーザーはそのデータを全文検索できるようにします。私はmysqlからlucene solrへの日インポートデータを4回実行することができますが、ユーザーとsolrによるmysql変更のデータがデータのインポートと索引付けをまだ開始していない場合は、変更されたデータ。

lucene solrをmysqlとphpに統合する最良の方法は何ですか?

mysql トランザクションが正常に完了した場合にのみsolrでデータをコミットするように、変更されたデータをsolr ftom phpに送信することは可能ですか?最終的に私はmysqlとコミットされたデータにコミットしましたluceneの場合、mysqlのようにWebアプリケーションのロールバックに何か問題があった場合はsolrと同じですか?

+0

このプロジェクトのためのあなたの意図した範囲の詳細を含めるようにあなたの質問を編集することを検討してください。今あなたのテーブルには何行ありますか? 1日あたり何人ですか。あなたはSolr/Luceneにどれくらいの歴史を保存したいですか?私の気持ちは、mysqlは、カラムデフ用の型指定されたデータを使用しなければならないというトレードオフを非常に効率的に(そしてクエリを)データを保存するための設計されたソリューションであり、データはきれいにする必要があります。検索エンジンは、データの一般性、検索速度の第2位、およびディスクとRAMの効率的な使用(データベースと比較して)の3番目に設計されています。多くの研究をしてください!がんばろう。 – shellter

答えて

0

Luceneの実装を検討している場合は、テーブルの数は関係ありません。最良のアプローチについては、ZendのZend Search Luceneを実装するといいでしょう。

Zend Search Luceneのようなluceneライブラリには、データをトークン化して検索する独自のメカニズムがあります。彼らは基本的にデータベースからデータを供給され、そこから検索ファイルを作成して別々に保管します。何か問題が生じた場合は検索を再構築します

データベースの更新時にLuceneデータを更新する可能性については、実装するソリューションに完全に依存しています。それに対して、Zend Search Luceneができます。

+0

私はmysqlに格納されているデータの全文検索をしたいが、どのようにしてそれをapache solr.Iと同期させておくのかわからない。それは遅いzend_luceneを読んで、より有益なapache solrを使う。 – paganotti

+0

@paganotti、Apacheの方が良いですが、ZendのLuceneは私の過去の経験から遅くはありません。 – Starx

+0

ありがとうございました。私はzend luceneを使うべきです。 – paganotti

0

MySqlからのヒットとSolrからのヒットの一部が一致しないと、検索結果が一致しないことがあります。

のいずれかを考えてみて:

  1. の実装Solrにははmysql-間でアップ同期データを維持する意味Solrの

を検索するすべてのあなたの全文をやってMySQLの

  • で検索すべてのあなたの全文を行う> Solrの追加のインフラストラクチャが必要です。

    MySQLのFULLTEXTインデックスとMATCH() AGAINST()クエリ句を使用するだけで、必要な処理ができるかどうかを確認してください。あなたのアプリケーションをよりシンプルに保ちます。

    http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html