ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Redis を使用して自動補完検索を実装する
現代の Web サイト開発では、検索機能が不可欠です。ただし、ユーザーがクエリ キーワードの入力を開始すると、検索エンジンは通常、ユーザーが入力を完了するのを待ってから、完全な検索を実行します。これにより、特に大量のデータがある場合に、ユーザー エクスペリエンスと応答性が低下します。
ユーザー エクスペリエンスと応答速度を向上させるために、オートコンプリート検索機能を使用できます。オートコンプリート検索機能を使用すると、サイトはすぐに応答し、ユーザーの入力と最も可能性の高い引用に基づいて、考えられる多数の検索結果を表示します。
この記事では、PHPとRedisを使って自動補完検索機能を実装する方法を紹介します。
PHP は、Web 開発に広く使用されている汎用プログラミング言語です。 Redis は、キャッシュと高速データ アクセスのための高速なメモリ内キー/値ストア データベースです。これら 2 つの手法を使用して、オートコンプリート検索の実装を構築します。
まず、ユーザーの入力を取得し、検索結果を表示するための入力ボックスを作成する必要があります。 HTML と JavaScript を使用してこれらの機能を実装できます。ユーザーが入力ボックスにクエリ キーワードを入力すると、JavaScript を使用して一致する検索結果をサーバーに要求し、ドロップダウン メニューに表示できます。ここでは、ページを更新せずに自動リクエストを実装するために AJAX テクノロジーが必要です。
次に、このリクエストをサーバー側に送信する必要があります。 PHP を使用してこのタスクを処理できます。まず、AJAX リクエストに応答するスクリプトをサーバー側で作成する必要があります。このスクリプトはユーザーの入力を処理し、データ検査に Redis キャッシュを利用します。
Redis を使用すると、キーワードと参照カウントされたキーと値のペアをメモリに保存できます。検索キーワードを入力すると、メモリ内で関連するキーワードがすぐに検索され、参照カウントが更新されます。キャッシュを使用すると、検索結果を取得する速度が向上します。
PHP スクリプトは次のように進める必要があります:
次のステップでは、関連する検索結果を抽出するための PHP コードを作成します。キーワードと参照カウントを Redis データベースに保存すると仮定すると、次のコードを使用して関連する検索結果を抽出できます:
$redis = new Redis();
$redis->connect(' 127.0 .0.1', 6379);
$query = $_GET['query'];
$keywords = $redis->zRevRange('keywords', 0, -1, 'WITHSCORES' ) ;
$results = array();
foreach ($keywords as $keyword => $score) {
if (stripos($keyword, $query) === 0) { $results[] = array( 'name' => $keyword, 'score' => $score ); }
}
usort($results , function($elem1, $elem2) {
return $elem2['score'] - $elem1['score'];
});
echo json_encode($results);
ここでは、Redis の zRevRange() メソッドを使用して抽出しますすべてのキーワードのキーと値のペア。参照カウントの最大値から最小値の順に並べ替えられます。その後、stripos() 関数を使用してあいまい一致を実行し、関連する検索結果を除外して、結果セットに追加します。最後に、usort() 関数を使用して、検索結果を参照カウントで並べ替えます。最後に、 json_encode() 関数を使用して結果を JSON 形式に変換し、JavaScript に返します。
この時点で、PHP と Redis を使用して自動補完検索を実装する基本的な機能が完成しました。この機能により、ユーザーは完全な検索が完了するまで待たずに検索結果を確認できるようになります。これにより、ユーザー エクスペリエンスと応答速度が大幅に向上します。
以上がPHP と Redis を使用して自動補完検索を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。