ホームページ  >  記事  >  バックエンド開発  >  PHP と Elasticsearch を使用して多言語検索を実装する方法

PHP と Elasticsearch を使用して多言語検索を実装する方法

王林
王林オリジナル
2023-07-17 08:12:11725ブラウズ

PHP と Elasticsearch による多言語検索の実装方法

今日のインターネット環境では、グローバリゼーションの進展に伴い、多言語検索は多くの Web サイトで必要な機能の 1 つとなっています。 Elasticsearch は、強力なオープンソース検索エンジンとして、効率的かつ柔軟な検索機能を備えています。この記事では、PHP と Elasticsearch を使用して多言語検索を実装する方法をコード例とともに紹介します。

1. 準備
開始する前に、次の環境がインストールされていることを確認する必要があります:

  1. PHP 環境: PH​​P がインストールされ、正常に実行できることを確認します。 。
  2. Elasticsearch: Elasticsearch がインストールされており、正常に起動できることを確認してください。

2. インデックスの確立
多言語検索を実行する前に、まず適切なインデックスを作成し、対応するデータを Elasticsearch に保存する必要があります。以下は簡単な例です:

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'http://localhost:9200'
];

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

$params = [
    'index' => 'my_index',
    'body'  => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

上記のコードでは、Elasticsearch の PHP クライアントを使用して、記事のタイトルに対応するタイトルとコンテンツ フィールドを含む my_index という名前のインデックスを作成します。そして内容。 2 つのサブフィールド「zh」と「en」が定義されており、それぞれ中国語版と英語版のデータを格納するために使用され、対応するアナライザーが指定されています。

3. データの挿入
次に、後続の検索のためにインデックスにデータを挿入する必要があります。以下は簡単な例です:

<?php

$doc = [
    'title' => [
        'zh' => '中文标题',
        'en' => 'English title'
    ],
    'content' => [
        'zh' => '中文内容',
        'en' => 'English content'
    ]
];

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => $doc
];

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

上記のコードでは、中国語と英語のタイトルとコンテンツを含むドキュメントを作成し、それを my_index という名前のインデックスに挿入します。

4. 検索
インデックスの作成とデータの挿入が完了したら、多言語検索を開始できます。以下に簡単な例を示します。

<?php

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query' => '关键词',
                'fields' => ['title.zh', 'content.zh', 'title.en', 'content.en']
            ]
        ]
    ]
];

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

var_dump($response['hits']['hits']);

上記のコードでは、多言語複数フィールド検索を使用して、検索するフィールドとキーワードを指定して検索します。検索結果は関連性によって並べ替えられ、一致するドキュメントが返されます。

5. 概要
PHP と Elasticsearch を使用して多言語検索を実装するのは複雑ではありません。適切なインデックスとデータ挿入を構築し、多言語、複数フィールドの検索と組み合わせることで、多言語検索機能を迅速かつ正確に実装できます。この記事がお役に立てば幸いです。

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

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