PHP と Elasticsearch を使用して全文検索エンジンを構築する方法
全文検索エンジンは現代のインターネットにおいて重要な役割を果たしており、ユーザーがニーズに合った情報を素早く見つけることができるようになります。優れた全文検索エンジンは、迅速に検索するだけでなく、高品質の検索結果を提供する必要があります。この記事では、PHP と Elasticsearch を使用して全文検索エンジンを構築する方法を説明します。
Elasticsearch とは何ですか?
Elasticsearch は、Lucene 検索エンジン ライブラリに基づくオープン ソースの検索エンジンです。分散型マルチテナント全文検索エンジンを提供し、大規模なデータを自動的に処理できます。 Elasticsearch はデータを迅速に検索および分析でき、リアルタイム検索をサポートしています。つまり、データが更新されると、Elasticsearch はミリ秒以内に新しいデータから検索結果を返すことができます。
Elasticsearch は、テキスト、数値、日付、地理的位置などを含むさまざまなデータ型をサポートします。 Elasticsearch を使用すると、全文検索エンジンを迅速に構築し、さまざまなニーズに応じてカスタマイズできます。
PHP を使用した Elasticsearch への接続
PHP を使用して Elasticsearch に接続するには、Elasticsearch PHP クライアント ライブラリをインストールする必要があります。このライブラリをインストールする最も簡単な方法は、次のコマンドでインストールできる Composer を使用することです:
composer require elasticsearch/elasticsearch
インストールが完了したら、コード内でこのライブラリを参照します:
require 'vendor/autoload.php'; use ElasticsearchClientBuilder;
ここでは、 Elasticsearch PHP クライアント ライブラリの ClientBuilder クラスを使用して Elasticsearch に接続しました。
$config = [
'hosts' => ['localhost:9200']
];
$client = ClientBuilder::create()->setHosts($config['hosts'])-> build();
ここでは、ClientBuilder クラスを使用して Elasticsearch クライアントを作成し、クラスターのホスト名とポートを使用して接続します。
インデックスの作成
全文検索エンジンでは、データはデータベースではなくインデックスに保存する必要があります。インデックスを作成するには、まずデータの構造とインデックスの設定を定義する必要があります。この構造はマッピングと呼ばれます。
この例では、記事を検索するための検索エンジンを作成すると仮定します。記事には、タイトル、著者、発行日、本文などのフィールドがあります。次のコードを使用してマッピングを定義できます:
$params = [
'index' => 'articles', 'body' => [ 'mappings' => [ 'article' => [ 'properties' => [ 'title' => ['type' => 'text'], 'author' => ['type' => 'text'], 'publish_date' => ['type' => 'date'], 'body' => ['type' => 'text'] ] ] ] ]
];
$response = $client->indices()->create( $ params);
ここでは、「articles」という名前のインデックスを定義し、記事のタイトル、著者、発行日、テキストなどの記事のマッピングを定義します。これにより、定義したフィールドを含む「article」というタイプを含む「articles」というインデックスが作成されます。
インデックスを作成したら、インデックスへのデータの追加を開始できます。
データの追加
データを追加するには、index
メソッドを呼び出してデータを Elasticsearch に書き込みます:
$params = [
'index' => 'articles', 'type' => 'article', 'id' => 1, 'body' => [ 'title' => '如何使用PHP和Elasticsearch构建全文搜索引擎', 'author' => 'John Doe', 'publish_date' => '2020-01-01', 'body' => '全文搜索引擎在现代互联网中扮演着重要的角色……' ]
];
$client->index($params);
ここでは、インデックスを作成する「articles」インデックスと「article」タイプを指定し、一意の ID を使用します。データのインデックスを作成するときは、データを Elasticsearch に書き込み、インデックスを付けて検索可能にします。
クエリ データ
データをクエリするには、クエリ リクエストを作成し、Elasticsearch サーバーに送信する必要があります。フィールド内のキーワードと一致する一致クエリを使用できます。例:
$query = [
'match' => [ 'title' => 'Elasticsearch' ]
];
$params = [
'index' => 'articles', 'type' => 'article', 'body' => [ 'query' => $query ]
];
$response = $ client->search($params);
ここでは、「title」フィールドを含み、「title」フィールドにキーワードが含まれる、「articles」インデックス内のタイプ「article」のすべてのドキュメントをクエリします。 「エラスティックサーチ」。
Elasticsearch は、ブール クエリ、範囲クエリ、プレフィックス クエリなど、他の多くの種類のクエリもサポートしています。すべてのクエリの種類とその使用方法を理解すると、検索エンジンをさまざまな種類のデータにさらに適応させることができます。
結論
この記事では、PHP と Elasticsearch を使用して全文検索エンジンを構築する方法を学びました。まず Elasticsearch PHP クライアント ライブラリをインストールし、それを使用して Elasticsearch サーバーに接続しました。次に、「articles」というインデックスを作成し、記事のマッピングを定義します。その後、データを追加してクエリを実行しました。最後に、Elasticsearch が多くのクエリ タイプをサポートしていることを知り、さまざまなデータ タイプに適したより強力な全文検索エンジンを構築できるように、それらの使用方法を学びました。
以上がPHP と Elasticsearch を使用して全文検索エンジンを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。