ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Manticore Search を使用してリアルタイムの検索候補を作成する

PHP と Manticore Search を使用してリアルタイムの検索候補を作成する

王林
王林オリジナル
2023-08-06 17:09:071240ブラウズ

PHP と Manticore Search を使用したリアルタイム検索提案機能の開発

はじめに:
現代のインターネット アプリケーションでは、リアルタイム検索提案機能が非常に一般的になりました。ユーザーが検索ボックスにキーワードを入力すると、システムは関連する検索候補を自動的に表示し、ユーザーが必要なコンテンツを見つけやすくします。この記事では、PHP と Manticore Search を使用してリアルタイム検索候補機能を開発する方法を紹介します。

1.マンティコア検索とは何ですか?
Manticore Search は、Sphinx に基づいて開発されたオープンソースの全文検索エンジンです。 Manticore Search は、高性能の全文検索およびページング機能を提供し、リアルタイムのインデックス更新をサポートします。この記事では、Manticore Search を利用して、リアルタイムの検索候補を実装します。

2. 準備
開発を開始する前に、Manticore Search と PHP 拡張機能 sphinx をインストールする必要があります。具体的なインストール手順については、Manticore Search の公式ドキュメントを参照してください。

3. マンティコア検索インデックスを作成する
まず、検索候補データを保存するためにマンティコア検索インデックスを作成する必要があります。ここでは、ユーザーの名前を検索していると仮定します。

  1. インデックス設定ファイルの作成
    まず、Manticore Search の設定フォルダーに新しい設定ファイル assign.conf を作成し、次の内容を入力します。
source suggest
{
    type = mysql
    sql_host = localhost
    sql_user = your_username
    sql_pass = your_password
    sql_db = your_database
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    sql_query = 
        SELECT name, weight() AS weight 
        FROM users
}

index suggest_index
{
    source = suggest
    path = /path/to/suggest_index
    morphology = none
    min_infix_len = 1
}

ここに対応するデータベース接続情報とパスを変更する必要があります。

  1. インデックスの作成
    次のコマンドを実行してインデックスを作成します:
$ indexer --config suggest.conf --all --rotate

4. PHP コードを作成します
次に、PHP コードを作成する必要があります。リアルタイム検索の推奨機能を実装します。

  1. マンティコア検索への接続
    まず、PHP コードでマンティコア検索に接続する必要があります。 sphinxapi 拡張機能を使用してこれを実現できます。
<?php
$host = 'localhost';
$port = 9306;
$index = 'suggest_index';

$cl = new SphinxClient();
$cl->SetServer($host, $port);
$cl->SetConnectTimeout(1); // 设置连接超时时间
$cl->SetArrayResult(true); // 将结果转换为数组
  1. ユーザー入力の処理
    次に、ユーザーが検索ボックスに入力したキーワードを取得し、それを Manticore に渡す必要があります。検索 検索。 GET または POST メソッドを使用してユーザー入力を取得できます:
<?php
$input = $_GET['q']; // 获取用户输入的关键字
  1. 検索
    マンティコア検索を使用して検索し、検索結果を取得します:
<?php
$res = $cl->Query($input, $index);
  1. 検索候補の出力
    検索結果を検索候補に処理し、JSON 形式でフロントエンドに出力します:
<?php
$data = [];

if ($res && $res['total']) {
    foreach ($res['matches'] as $match) {
        $data[] = ['name' => $match['attrs']['name']];
    }
}

echo json_encode($data);

5. フロントエンド コード
最後に、 PHP バックエンドにリクエストを送信し、検索候補の結果を受け取るフロントエンド コードを記述する必要があります。

  1. HTML コード
<!DOCTYPE html>
<html>
<head>
    <title>实时搜索建议</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <input type="text" id="search-input" placeholder="请输入搜索关键字">
    <ul id="search-suggestions"></ul>

    <script>
        $(function() {
            var timer;

            $('#search-input').on('input', function() {
                clearTimeout(timer);

                var query = $(this).val();

                timer = setTimeout(function() {
                    $.get('suggest.php', { q: query }, function(data) {
                        var suggestions = '';

                        $.each(data, function(_, item) {
                            suggestions += '<li>' + item.name + '</li>';
                        });

                        $('#search-suggestions').html(suggestions);
                    });
                }, 300);
            });
        });
    </script>
</body>
</html>

6. まとめ
PHP と Manticore Search を利用することで、リアルタイムの検索サジェスト機能を簡単に実装できます。これにより、ユーザーの検索エクスペリエンスが向上し、探しているものをより速く見つけられるようになります。この記事がお役に立てば幸いです!

以上がPHP と Manticore Search を使用してリアルタイムの検索候補を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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