ホームページ  >  記事  >  バックエンド開発  >  PHP と Manticore Search を使用してクイック検索プロンプトを開発する

PHP と Manticore Search を使用してクイック検索プロンプトを開発する

WBOY
WBOYオリジナル
2023-08-05 22:25:05668ブラウズ

PHP と Manticore Search を使用して、迅速な検索プロンプト機能を開発する

はじめに

現在、インターネットの発展に伴い、検索エンジンは人々が情報を入手できる主要なツールの 1 つとなっています。情報。ユーザーは通常、キーワードを使用して興味のあるコンテンツをクエリし、検索エンジンはこれらのキーワードに基づいて関連する結果を返します。

ただし、従来の検索方法にはいくつかの制限があります。正確な結果を得るには、ユーザーは完全なキーワードを入力する必要があるため、ユーザーの待ち時間が長くなる可能性があります。ユーザー エクスペリエンスを向上させるために、ユーザーがキーワードを入力すると関連する検索候補を即座に取得できるクイック検索プロンプト機能の使用を検討できます。

この記事では、PHP と Manticore Search を使用してクイック検索プロンプトを実装する方法を紹介します。

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」というテーブルがあるとします。

次のコードを使用してインデックスを作成できます:

<?php

require_once 'ManticoreSearch.php';

$client = new ManticoreSearchClient([
    'host' => '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 コマンドを使用して、検索ヒントを保存するための列をインデックスに追加します。

検索プロンプトの作成

データとインデックスの準備ができたので、検索プロンプトの作成を開始できます。これを実現するには、次のコードを使用します。

<?php

require_once 'ManticoreSearch.php';

$client = new ManticoreSearchClient([
    'host' => '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 フィールドにより高い重みを与えています。実際の状況に応じてフィールドの重みを調整できます。

最後に、検索候補を JSON 形式に変換して出力します。

結論

この記事では、PHP と Manticore Search を使用してクイック検索プロンプトを実装する方法を学びました。適切なインデックスを構築し、適切なクエリ ステートメントを使用することで、ユーザーがキーワードを入力すると、関連する検索候補を即座に取得できるようになります。このアプローチにより、ユーザーの検索エクスペリエンスが大幅に向上します。

スペースの制限のため、この記事では、必要に応じて変更および拡張できる簡単なサンプル コードのみを提供します。この記事が、Manticore Search をさらに詳しく調べて使用して、より強力な検索機能を構築するのに役立つことを願っています。

以上がPHP と Manticore Search を使用してクイック検索プロンプトを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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