-2

私はphpとmysqlが初めてです。今、問題に直面しています。大規模なデータベースでデータを検索する必要がありますが、単語を検索するのに 3 分以上かかり、ブラウザがタイムアウトを表示することがあります。FULLTEXT という手法を使用して検索を行っていますが、検索時間を短縮するための解決策はありますか?

4

3 に答える 3

1

後で好むテーブルフィールドのインデックスを作成します。メモリスペースがいくらかかかったとしても、クエリ結果はより短い時間で最良の結果を返すはずです。

于 2012-05-09T04:55:30.530 に答える
1

これはあなたの質問に直接答えるものではありませんが、提案です:

全文検索でも同じ問題が発生したため、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:

http://wiki.apache.org/solr/SolPHP

于 2012-05-09T04:58:03.180 に答える
0

データベースの大きさによって異なります。検索するフィールドのインデックスを追加することは、最初に行うことです。

私は同じ問題に直面しており、フィールドのインデックスを追加するとうまくいきました。

于 2012-05-09T07:08:59.290 に答える