ホームページ > バックエンド開発 > PHPチュートリアル > PHPのElasticsearchをベースとした検索結果表示・カスタマイズ技術

PHPのElasticsearchをベースとした検索結果表示・カスタマイズ技術

WBOY
リリース: 2023-10-03 09:34:02
オリジナル
1199 人が閲覧しました

PHP 中基于 Elasticsearch 的搜索结果展示与定制技术

PHP における Elasticsearch をベースとした検索結果表示およびカスタマイズ技術

はじめに:
現代のインターネット時代において、検索機能は Web サイトやアプリケーションに不可欠な要素となっています。 。検索エンジンを通じてユーザーが望む結果を迅速かつ正確に表示する方法は、開発者にとって常に直面する課題です。 Elasticsearch は、オープンソースの分散型全文検索エンジンで、その高性能、強力な検索および分析機能により開発者の間で広く人気があります。この記事では、PHP における Elasticsearch ベースの検索結果表示およびカスタマイズ技術を紹介し、具体的なコード例を示します。

1. Elasticsearch のインストールと設定

まず、Elasticsearch をインストールして起動する必要があります。 Elasticsearch の公式 Web サイト (https://www.elastic.co/) から最新の安定バージョンをダウンロードし、公式ドキュメントに従ってインストールおよび設定できます。

2. PHP Elasticsearch クライアント ライブラリ

PHP では、公式に提供されている Elasticsearch クライアント ライブラリを使用して Elasticsearch と対話できます。 Composer を使用してインストールできます:

composer require elasticsearch/elasticsearch
ログイン後にコピー

インストールが完了したら、Elasticsearch クライアント ライブラリをプロジェクトに導入できます:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;
ログイン後にコピー

3. インデックスとドキュメントを作成します

検索を開始する前に、インデックスを作成し、いくつかのドキュメントを Elasticsearch に追加する必要があります。以下は PHP コードの例です:

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

$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);

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '1'
            ]
        ],
        [
            'title' => 'PHP Elasticsearch 搜索实战',
            'content' => '在 PHP 中使用 Elasticsearch 进行高效的搜索技术实战。'
        ],
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '2'
            ]
        ],
        [
            'title' => 'Elasticsearch 基础教程',
            'content' => '学习使用 Elasticsearch 基础教程,从入门到精通。'
        ],
    ]
];

$response = $client->bulk($params);
ログイン後にコピー

4. 検索と表示

次に、PHP で Elasticsearch を使用して検索し、結果をユーザーに表示する方法を示します。 PHP コードの例を次に示します。

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

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . '<br>';
    echo $hit['_source']['content'] . '<br><br>';
}
ログイン後にコピー

上記のコードは、タイトルに Elasticsearch を含む、my_index にインデックス付けされたドキュメントを検索し、結果を出力します。

5. 検索結果のカスタマイズ

単純な検索と表示に加えて、検索結果をカスタマイズすることもできます。以下は、検索結果のカスタマイズ処理のサンプル コードです。

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

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ],
        'highlight' => [
            'pre_tags' => '<strong>',
            'post_tags' => '</strong>',
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass()
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    $title = isset($hit['highlight']['title']) ? implode(' ', $hit['highlight']['title']) : $hit['_source']['title'];
    $content = isset($hit['highlight']['content']) ? implode(' ', $hit['highlight']['content']) : $hit['_source']['content'];

    echo $title . '<br>';
    echo $content . '<br><br>';
}
ログイン後にコピー

上記のコードは、強調表示機能を導入し、検索結果内の一致するキーワードに <strong> タグを使用します。マークを付けます。

結論:
Elasticsearch と PHP クライアント ライブラリを使用すると、PHP に検索機能をすばやく実装し、検索結果をカスタマイズできます。この記事の内容が、PHP で Elasticsearch を使用して検索結果を表示およびカスタマイズするのに役立つことを願っています。

以上がPHPのElasticsearchをベースとした検索結果表示・カスタマイズ技術の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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