ホームページ  >  記事  >  バックエンド開発  >  PHP と Elasticsearch を使用してオートコンプリート検索機能を構築する方法

PHP と Elasticsearch を使用してオートコンプリート検索機能を構築する方法

WBOY
WBOYオリジナル
2023-07-17 20:09:071507ブラウズ

PHP と Elasticsearch を使用してオートコンプリート検索関数を構築する方法

タイトル: PHP と Elasticsearch を使用してオートコンプリート検索関数を構築する方法

はじめに:
最新の Web アプリケーションでは、検索機能は不可欠な部分です。これにより、ユーザー エクスペリエンスが大幅に向上し、ユーザーが必要な情報をより速く見つけられるようになります。一般的な検索機能の 1 つはオートコンプリートで、ユーザーが検索語を入力すると、候補となる検索候補が即座に表示されます。この記事では、PHP と Elasticsearch を使用してオートコンプリート検索機能を構築する方法を紹介します。

ステップ 1: Elasticsearch をインストールして構成する
まず、Elasticsearch をインストールして構成する必要があります。このステップを完了するには、Elasticsearch の公式ドキュメントを参照してください。

ステップ 2: Elasticsearch インデックスを作成する
次に、検索データを保存するための Elasticsearch インデックスを作成する必要があります。電子商取引 Web サイトのオートコンプリート検索機能を構築したいとします。「products」というインデックスを作成できます。このインデックス内で、オートコンプリートの候補を保存する「autocomplete」というフィールドを定義できます。

以下はインデックスを作成するサンプル コードです:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'products',
    'body' => [
        'mappings' => [
            'properties' => [
                'autocomplete' => [
                    'type' => 'text',
                    'analyzer' => 'autocomplete',
                    'search_analyzer' => 'standard',
                ]
            ]
        ],
        'settings' => [
            'analysis' => [
                'analyzer' => [
                    'autocomplete' => [
                        'type' => 'custom',
                        'tokenizer' => 'standard',
                        'filter' => ['lowercase', 'autocomplete_filter'],
                    ],
                ],
                'filter' => [
                    'autocomplete_filter' => [
                        'type' => 'edge_ngram',
                        'min_gram' => 1,
                        'max_gram' => 20,
                    ],
                ],
            ],
        ],
    ],
];

$response = $client->indices()->create($params);

ステップ 3: Elasticsearch にデータをインポートする
次に、データを Elasticsearch インデックスにインポートする必要があります。 「products.csv」という名前の製品データ ファイルがすでにあると仮定します。 PHP の CSV ライブラリを使用してファイルを読み取り、データを Elasticsearch にインポートできます。

以下は、データをインポートするためのサンプル コードです:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$client = ClientBuilder::create()->build();

$csvFile = fopen('products.csv', 'r');

while (($data = fgetcsv($csvFile, 1000, ',')) !== false) {
    $params = [
        'index' => 'products',
        'body' => [
            'autocomplete' => $data[1],
        ],
    ];

    $client->index($params);
}

fclose($csvFile);

ステップ 4: 自動補完検索機能を実装する
インデックスを作成し、データをインポートしたので、開始できます。自動検索機能の実装が完了しました。 Elasticsearch の「match_phrase_prefix」クエリを使用して、この機能を実現できます。

以下はオートコンプリート検索機能を実装するサンプルコードです:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match_phrase_prefix' => [
                'autocomplete' => [
                    'query' => $_GET['term']
                ]
            ],
        ],
    ],
];

$response = $client->search($params);

$suggestions = [];

foreach ($response['hits']['hits'] as $hit) {
    $suggestions[] = $hit['_source']['autocomplete'];
}

echo json_encode($suggestions);

結論:
この記事では、PHP を使用してオートコンプリート検索機能を構築する方法を紹介しました。そしてエラスティックサーチ。 Elasticsearch のインストールと構成、インデックスの作成とデータのインポート、オートコンプリート検索機能の実装により、ユーザーが必要な情報をより速く見つけられるようになり、ユーザー エクスペリエンスが向上します。この記事がお役に立てば幸いです!

以上がPHP と Elasticsearch を使用してオートコンプリート検索機能を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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