私はphpとmysqlが初めてです。今、問題に直面しています。大規模なデータベースでデータを検索する必要がありますが、単語を検索するのに 3 分以上かかり、ブラウザがタイムアウトを表示することがあります。FULLTEXT という手法を使用して検索を行っていますが、検索時間を短縮するための解決策はありますか?
3 に答える
後で好むテーブルフィールドのインデックスを作成します。メモリスペースがいくらかかかったとしても、クエリ結果はより短い時間で最良の結果を返すはずです。
これはあなたの質問に直接答えるものではありませんが、提案です:
全文検索でも同じ問題が発生したため、SOLR に切り替えました。
http://lucene.apache.org/solr/
Java で書かれた Lucene ライブラリに基づく検索サーバーです。これは、いくつかの最大規模の Web サイトで使用されています。
http://wiki.apache.org/solr/PublicServers
したがって、速度とスケーラビリティは問題になりません。ただし、それを実装するために Java を知る必要はありません。クエリを実行できる REST インターフェイスを提供し、検索結果を PHP 配列形式で返すオプションも提供します。
公式のチュートリアルは次のとおりです。
https://builds.apache.org/job/Solr-trunk/javadoc/doc-files/tutorial.html
SOLR はインデックス付きファイルを検索するため、データベースの内容を xml または json ファイルに取得する必要があります。そのために、データ インポート ハンドラー拡張機能を使用できます。
http://wiki.apache.org/solr/DataImportHandler
REST インターフェースをクエリするには、単純にget_file_contents()
php 関数または CURL を使用できます。または、SOLR 用の PHP SDK:
データベースの大きさによって異なります。検索するフィールドのインデックスを追加することは、最初に行うことです。
私は同じ問題に直面しており、フィールドのインデックスを追加するとうまくいきました。