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 サイトの他の関連記事を参照してください。