PHP と Elasticsearch を使用して全文検索エンジンを構築する方法

王林
リリース: 2023-05-27 08:16:01
オリジナル
1281 人が閲覧しました

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート