PHP と Manticore Search を使用して、迅速な検索プロンプト機能を開発する
現在、インターネットの発展に伴い、検索エンジンは人々が情報を入手できる主要なツールの 1 つとなっています。情報。ユーザーは通常、キーワードを使用して興味のあるコンテンツをクエリし、検索エンジンはこれらのキーワードに基づいて関連する結果を返します。
ただし、従来の検索方法にはいくつかの制限があります。正確な結果を得るには、ユーザーは完全なキーワードを入力する必要があるため、ユーザーの待ち時間が長くなる可能性があります。ユーザー エクスペリエンスを向上させるために、ユーザーがキーワードを入力すると関連する検索候補を即座に取得できるクイック検索プロンプト機能の使用を検討できます。
この記事では、PHP と Manticore Search を使用してクイック検索プロンプトを実装する方法を紹介します。
Manticore Search は、Sphinx Search から派生したオープン ソースの全文検索エンジンで、より高いパフォーマンスとより多くの機能を備えています。
Manticore Search では、検索プロンプトを実装するための「補完」と呼ばれる機能が提供されています。適切なインデックスを構築し、適切なクエリ ステートメントを使用することで、高速かつ正確な検索候補を実現できます。
始める前に、Manticore Search をインストールし、PHP が Manticore Search との通信をサポートしていることを確認する必要があります。pecl
コマンドを使用して、関連する拡張機能をインストールできます。
pecl install manticore
インストールが成功したら、PHP 拡張機能構成ファイルでこの拡張機能を有効にする必要があります。php.ini
に次の行を追加できます:
extension=manticore.so
変更を有効にするために PHP を再起動します。
始める前に、いくつかのデータを準備し、対応するインデックスを作成する必要があります。製品名と説明を含む「product」というテーブルがあるとします。
次のコードを使用してインデックスを作成できます:
'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $client->query("DELETE FROM $table WHERE 1"); $client->query("TRUNCATE RTINDEX $index"); $data = [ ['id' => 1, 'name' => 'iPhone X', 'description' => 'A revolutionary new iPhone.'], ['id' => 2, 'name' => 'Samsung Galaxy S9', 'description' => 'The latest Samsung smartphone.'], ['id' => 3, 'name' => 'Google Pixel 3', 'description' => 'A powerful Android phone.'], // 添加更多产品数据... ]; $client->index($table, $data); $client->query("ALTER RTINDEX $index ADD COLUMN completion TEXT"); $client->disconnect(); ?>
上記のコードでは、まずClient
インスタンスを作成し、次にconnect## を使用します。 # マンティコア検索サービスに接続する方法。次に、対応するテーブルとインデックスを空にして再構築します。
$data配列に必ず追加してください。
ALTER RTINDEXコマンドを使用して、検索ヒントを保存するための列をインデックスに追加します。
'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; $query = "SELECT * FROM $index WHERE MATCH(:keyword) OPTION field_weights=(name=10, description=5) LIMIT 10"; $params = [ 'keyword' => "@(name,description) $keyword*", ]; $result = $client->query($query, $params); $suggestions = []; if ($result !== false) { foreach ($result['hits'] as $hit) { $suggestions[] = $hit['attrs']['name']; } } $client->disconnect(); echo json_encode($suggestions); ?>
Clientインスタンスを作成して接続します。次に、ユーザーが入力したキーワードを保存する
$keyword変数を定義します。
SELECTステートメントを使用してクエリを実行します。ユーザーが入力したキーワードをクエリの一部として含め、
MATCH句を使用してインデックス内のコンテンツを照合することで、キーワードに一致する結果を取得できます。
nameフィールドにより高い重みを与えています。実際の状況に応じてフィールドの重みを調整できます。
以上がPHP と Manticore Search を使用してクイック検索プロンプトを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。