PHP と Elasticsearch を使用して検索結果を強調表示する方法

WBOY
リリース: 2023-07-17 21:26:01
オリジナル
1210 人が閲覧しました

PHP と Elasticsearch を使用して強調表示された検索結果を取得する方法

はじめに:
現代のインターネットの世界では、検索エンジンが人々が情報を入手する主な方法となっています。検索結果の読みやすさとユーザー エクスペリエンスを向上させるために、検索キーワードを強調表示することが一般的な要件になっています。この記事では、PHP と Elasticsearch を使用して強調表示された検索結果を取得する方法を紹介します。

1. 準備
始める前に、PHP と Elasticsearch が正しくインストールされ、設定されていることを確認する必要があります。 Composer を使用して PHP の依存関係を管理し、次のコマンドを使用して Elasticsearch の PHP クライアントをインストールできます。

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

2. Elasticsearch に接続します
まず、Elasticsearch クライアント インスタンスを作成する必要があります。 PHP スクリプト。次のコードを使用して Elasticsearch に接続できます:

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();
ログイン後にコピー

3. インデックスとマッピングの作成
検索する前に、Elasticsearch が正しく処理できるようにインデックスを作成し、対応するフィールド マッピングを指定する必要があります。リクエスト。以下は、インデックスとマッピングを作成するサンプル コードです:

$params = [
    'index' => 'my_index',
    'body' => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'keyword' => [
                            'type' => 'keyword',
                        ],
                    ],
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'keyword' => [
                            'type' => 'keyword',
                        ],
                    ],
                ],
            ],
        ],
    ],
];

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

4. 検索を実行し、結果を強調表示します
次に、検索操作の実行を開始し、一致するキーワードを強調表示します。検索を実行し、結果を強調表示するサンプル コードを次に示します。

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => '关键字',
            ],
        ],
        'highlight' => [
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass(),
            ],
        ],
    ],
];

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

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

    echo "标题:{$title}
";
    echo "内容:{$content}

";
}
ログイン後にコピー

上記のコードは、Elasticsearch を通じてキーワード ベースの検索を実行し、一致するフィールドを強調表示します。検索結果で、特定のフィールドに一致するキーワードがある場合、そのフィールドの強調表示された結果が返されます。

結論:
この記事では、PHP と Elasticsearch を使用して強調表示された検索結果を取得する方法を紹介します。適切なインデックスとマッピングを設定し、関連する検索パラメーターを使用することで、検索結果の強調表示を簡単に実現できます。これにより、ユーザーの検索結果の理解と読み取りが向上し、ユーザー エクスペリエンスが向上することは間違いありません。

参考資料:

  • Elasticsearch 公式ドキュメント: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

以上がPHP と Elasticsearch を使用して検索結果を強調表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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