ホームページ  >  記事  >  バックエンド開発  >  サイト内検索に関する問題を解決する

サイト内検索に関する問題を解決する

WBOY
WBOYオリジナル
2016-06-13 13:33:501187ブラウズ

サイト内検索に関する問題を解決するには
サイト内検索についていくつか質問がありますので、説明してください。

単一のキーワードは言うまでもなく、複数のキーワードで検索することが重要です。複数のキーワード、キーワードを配列に分割したいのですか?配列に分割した場合(ユーザーがキーワードをいくつ入力するかわからないので配列の長さがわかりません)、SQLのどこにどう書けばよいのでしょうか?

私が見たチュートリアルは次のように書かれています

$sql = select * from bbs where title like '%$array[0]%' or content like '%$array[1]% ';

これだとタイトルに$array[1]、中身に$array[0]があれば検索不可能ではないでしょうか?

-----解決策---------
データの量が少ない場合は、次のようにすることができます。
ユーザーが多数のキーワードを入力し、それらをスペース (またはカンマ) に従って配列に分割するとします。それが $array
$sql= と呼ばれるものだとします。 select * from tablename where 1=1
foreach ($array as $value)
{
$sql.= および '%$value%' のようなタイトル、または '%$value%' のような内容
}
ブロガーのこの SQL 実行するレコードが数万件ある場合、それはかなり困難になります。

データベースの like クエリはすべてのテーブル レコードに便利で、時間計算量は O(n) です
データが多い場合は、タイトル コンテンツをセグメント化し、ハッシュ テーブルを使用してO1 の効率で対応するテーブルを検索します。その後、主キーがデータベースからクエリされます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。