0

私はphpとmysqlでWebアプリケーションを構築します。3-4テーブルで全文検索をしてデータを検索したい。lucenesolrプロジェクトを検討しています。

私の質問は次のとおりです。今日のデータを別のmysqlテーブルに保存して、その今日のデータのみを簡単に検索し、何かが見つかった場合は、luceneで全文検索を試行しますが、古いデータ(昨日から過去) ?

私のウェブアプリはデータをmysqlに保存しますが、そのユーザーがそのデータを全文検索できるようにしたいと思います。1日に4回、msqlからlucene solrにデータをインポートするジョブを実行できますが、mysqlのデータがユーザーによって変更され、solrがまだデータのインポートとインデックス作成を開始していない場合、ユーザーはどのような場合でも最近のデータを検索して確認できるはずです。変更されたデータ。

lucene solrをmysqlおよびphpと統合するための最良のアプローチは何ですか?

ユーザーが変更した更新データの変更コマンドをsolrftomphpに送信することは可能ですか?ただし、mysqlトランザクションが正常に実行された場合にのみ、solrにデータをコミットするようにしてください。最後に、mysqlでデータをコミットし、luceneでデータをコミットしました。 solrのようにmysqlのようにすべてWebアプリケーションのロールバックでうまくいかないのですか?

4

2 に答える 2

0

ヒットの一部がMySqlからのものであり、一部がSolrからのものであるため、検索結果に一貫性がない場合があります。

どちらかについて考えてください:

  1. MySQLですべての全文検索を行う
  2. Solrですべての全文検索を行う

Solrを実装するということは、MySQL->Solrと追加のインフラストラクチャーの間でデータの同期を維持することを意味します。

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

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

于 2012-05-10T17:16:53.370 に答える
0

Lucene の実装を考えているのであれば、テーブルの数は関係ありません。最善のアプローチとして、Zend のZend Search Luceneを実装することをお勧めします。

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

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

于 2012-05-03T23:33:45.980 に答える