2

私は自分のサイトで検索を作成していますが、検索に複数の単語を入力すると機能しないことに気付きました。クエリの要点は次のとおりです。

SELECT * FROM `blog` WHERE `content` LIKE '%$keyword%' OR `title` LIKE '%$keyword%' ORDER BY `id` DESC

奇妙なことに、phpMyAdminでクエリをテストすると、期待どおりの結果が返されます。しかし、私のWebサイトでは、結果が見つかりません。

キーワードのスペースを%sに置き換えてみましたが、何も変わりませんでした。

4

2 に答える 2

1

問題はLIKE、実際にキーワードを検索するのではなく、パターンマッチングを行うことです。データベース列にフルテキストインデックスを作成し、を使用する必要がありますWHERE MATCH keywords AGAINST column。これにより、すべてのキーワードが任意の順序で適切に検索され、とにかく高速になります。

于 2013-01-10T18:03:18.903 に答える
0

私はデータベースでこれを試しましたが、クエリでの使用はフルテキストインデックスLIKEでの使用よりも66倍以上高速です。MATCH互いに「接続」されている2つのテーブルを使用しています。1つはタグで、もう1つは製品です。

つまり、タグテーブルのタグ列にフルテキストインデックスを追加し、その列に対して照合を実行しました。クエリは、製品を結合してから、アイテムに関するデータを吐き出します。〜3000の製品と〜3000のタグで約4秒かかりました。

次に、最初に検索文字列を空白で展開し、次に結果を。で内破して試してみました%' OR tags.tag LIKE '%。これは、同じ量の製品とタグで約0.06秒かかりました。

于 2013-01-10T18:46:39.573 に答える