PHPとElasticsearchによる多言語検索ソリューション

PHPz
リリース: 2023-07-12 20:20:02
オリジナル
726 人が閲覧しました

PHP と Elasticsearch によって実装された多言語検索のソリューション

世界的なインターネットの急速な発展に伴い、多言語検索をサポートする必要があるアプリケーションがますます増えています。この多言語環境では、効率的かつ正確な検索システムを実装することが、ユーザー エクスペリエンスとデータ クエリにとって非常に重要です。この記事では、PHP と Elasticsearch を使用して多言語検索ソリューションを実装する方法を紹介します。

1. Elasticsearch を選択する理由は何ですか?
Elasticsearch は、オープンソースの分散検索および分析エンジンであり、その強力な全文検索機能と複数の言語をサポートするワード ブレーカーにより、多言語検索のニーズに十分に対応できます。従来のリレーショナル データベースと比較して、Elasticsearch はパフォーマンスが高く、クエリ構文が柔軟で、スケーラビリティが優れているため、検索エンジンの構築に非常に適しています。

2. Elasticsearch のインストールと設定
まず、Elasticsearch をサーバーにインストールし、基本的な設定を行う必要があります。具体的なインストールおよび設定手順については、Elasticsearch の公式ドキュメントを参照してください。インストールが完了したら、多言語検索をサポートするためにインデックスを作成し、対応するマッピングを定義する必要があります。

3. インデックスとマッピングの作成
Elasticsearch では、インデックスはリレーショナル データベースのテーブルに似ており、データの保存とインデックス付けに使用されます。 HTTP リクエストを送信することで、インデックスを作成し、対応するマッピングを定義できます。以下は簡単な例です:

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      },
      "content": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}
ログイン後にコピー

上の例では、「my_index」という名前のインデックスを作成し、「title」と「content」の 2 つのフィールドを定義しました。各フィールドには 2 つのサブフィールド「english」と「chinese」があり、それぞれ英語と中国語の単語の分割結果を格納するために使用されます。英語フィールドでは Elasticsearch の組み込みの英単語セグメンターが使用され、中国語フィールドでは中国語の単語セグメンター ik_max_word が使用されます。

4. PHP での検索操作
PHP では、Elasticsearch が提供する公式クライアント ライブラリを使用して検索操作を実行できます。まず、elasticsearch/elasticsearch パッケージをインストールする必要があります。 Composer を使用してインストールを完了できます。次の名前を実行するだけです:

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

次に、elasticsearch パッケージを導入して接続を確立する必要があります:

require 'vendor/autoload.php';

$client = new ElasticsearchClient([
    'hosts' => ['localhost:9200']
]);
ログイン後にコピー

接続を確立した後、次のことができます。検索操作を開始します。以下は、単純な PHP 検索コードの例です。

$params = [
    'index' => 'my_index',
    'type' => '_doc',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'keyword',
                'fields' => ['title.english', 'content.english', 'title.chinese', 'content.chinese']
            ]
        ]
    ]
];

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

上記の例では、クエリ キーワードと検索フィールドを含むリクエスト本文を作成し、Elasticsearch クライアントの検索メソッドを使用して検索操作を実行します。 。検索結果は $response 変数に保存されます。

5. 結果の分析と表示
最後のステップは、検索結果を解析してユーザーに表示することです。 Elasticsearchの検索結果は複数の文書を含むデータ構造になっており、必要に応じてこれらの文書を横断して解析・表示する必要があります。

これは簡単なコード例です:

foreach ($response['hits']['hits'] as $hit) {
    $title = $hit['_source']['title'];
    $content = $hit['_source']['content'];

    // 在这里进行结果展示或其他操作
}
ログイン後にコピー

上の例では、検索結果内の各ドキュメントを反復処理し、そこからタイトルとコンテンツを取得します。実際のニーズに応じて、結果を表示、並べ替え、またはその他の操作を実行できます。

6. 概要
PHP と Elasticsearch を使用して多言語検索ソリューションを実装すると、ユーザー エクスペリエンスが大幅に向上し、正確な検索結果が提供されます。合理的なインデックス マッピングと Elasticsearch が提供する強力な検索機能を使用することで、高性能の多言語検索システムを構築できます。この記事の内容がお役に立てば幸いです。また、優れた多言語検索システムを構築していただければ幸いです。

以上がPHPとElasticsearchによる多言語検索ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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