ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Elasticsearch を使用して全文検索を迅速に実装する方法

PHP と Elasticsearch を使用して全文検索を迅速に実装する方法

WBOY
WBOYオリジナル
2023-07-17 17:17:301123ブラウズ

PHP と Elasticsearch を通じて全文検索をすばやく実装する方法

最新のアプリケーションでは全文検索の重要性がますます高まっており、ユーザーが必要な情報をすばやく見つけるのに役立ちます。 Elasticsearch は、高速かつ効率的な全文検索機能を提供する強力なオープンソース検索エンジンです。 PHP のパワーと Elasticsearch の柔軟性を組み合わせることで、全文検索機能を簡単に実装できます。

この記事では、PHP と Elasticsearch を使用して全文検索機能を迅速に実装する方法を説明し、いくつかの簡単なコード例を示します。

  1. Elasticsearch のインストールと構成

まず、Elasticsearch をインストールして構成する必要があります。 Elasticsearch 公式 Web サイト (https://www.elastic.co/) から最新バージョンをダウンロードしてインストールできます。インストールしたら、PHP と通信するように Elasticsearch を設定する必要があります。 Elasticsearch の設定ファイルで、リモート アクセスを許可する次のオプションの値を設定します:

network.host: 0.0.0.0

設定ファイルを保存し、Elasticsearch を開始します。

  1. PHP を使用した Elasticsearch への接続

次に、PHP を使用して Elasticsearch に接続する必要があります。 PHP は、Elasticsearch-PHP (https://github.com/elastic/elasticsearch-php) と呼ばれる強力な Elasticsearch クライアント ライブラリを提供しており、これを使用して Elasticsearch と対話できます。

Composer を使用して Elasticsearch-PHP ライブラリをインストールできます。コマンドラインで PHP プロジェクト ディレクトリに切り替え、次のコマンドを実行します:

composer require elasticsearch/elasticsearch

インストールが完了したら、PHP ファイルで次のコードを使用して Elasticsearch に接続できます:

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->setHosts(['http://localhost:9200'])->build();

This コード スニペットは、Elasticsearch のホストおよびポート番号としてデフォルトの localhost:9200 を使用します。

  1. インデックスの作成

全文検索を実行する前に、データを Elasticsearch インデックスに保存する必要があります。インデックスは、Elasticsearch がドキュメントの保存と検索に使用する場所です。

Elasticsearch のインデックスにデータを保存する簡単な例を次に示します。

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                ],
                'content' => [
                    'type' => 'text',
                ],
            ],
        ],
    ],
];
$response = $client->indices()->create($params);

上の例では、最初に my_index## という名前のインデックスを定義します。 # のインデックスは、次に次のように定義します。ドキュメント内の 2 つのフィールド (titlecontent) のプロパティを取得し、フィールドのデータ型 (テキスト) を指定します。

    ドキュメントをインデックスに追加する
インデックスを作成したら、インデックスにドキュメントを追加できます。ドキュメントは Elasticsearch の基本単位であり、検索しているコンテンツが含まれています。

ドキュメントをインデックスに追加する簡単な例を次に示します:

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'Example Document',
        'content' => 'This is an example document for testing purposes',
    ],
];
$response = $client->index($params);

上の例では、

my_index という名前のインデックスを定義し、 という名前のドキュメントを追加しました。サンプル ドキュメント にいくつかのコンテンツが追加されました。

    全文検索の実行
インデックスを作成し、いくつかのドキュメントを追加したので、全文検索の実行を開始できます。

これは、全文検索に Elasticsearch を使用する方法を示す簡単な例です:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'example',
            ],
        ],
    ],
];
$response = $client->search($params);

上の例では、

content# ドキュメントを検索する一致クエリを定義しました。 ## フィールドにキーワード example が含まれています。

検索結果の処理
  1. 最後に、検索結果を処理してユーザー インターフェイスに出力する必要があります。検索結果の処理方法を示す簡単な例を次に示します。
foreach ($response['hits']['hits'] as $hit) {
    $source = $hit['_source'];
    echo 'Title: ' . $source['title'] . '<br>';
    echo 'Content: ' . $source['content'] . '<br><br>';
}

上の例では、検索結果内の各ドキュメントを反復処理し、タイトルとコンテンツを出力します。

概要

PHP と Elasticsearch を使用すると、全文検索機能を簡単に実装できます。この記事では、Elasticsearch への接続、インデックスの作成、ドキュメントの追加、全文検索の実行、および検索結果の処理方法を示す簡単な例を示します。これらの基本を使用すると、より強力で洗練された全文検索アプリケーションを構築できます。この記事がお役に立てば幸いです!

以上がPHP と Elasticsearch を使用して全文検索を迅速に実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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