php Elasticsearch: 中国語の単語の分割と他の言語での検索ニーズにどう対処するか?
要約
Elasticsearch は、さまざまな種類のデータ検索と分析のニーズに広く使用されている強力な分散検索エンジンです。ただし、英語以外の言語での検索ニーズ、特に中国語の検索では、正確さと信頼性を確保するために特別な処理が必要です。この記事では、PHP で Elasticsearch を使用して中国語の単語の分割と他の言語での検索要件を処理する方法を紹介し、具体的なコード例を示します。
はじめに
中国語の単語の分割は、検索と照合のために中国語のテキストを検索可能な単語に分割する非常に重要なステップです。中国語の意味上の複雑さのため、従来の英語の単語分割アルゴリズムは中国語にはあまり適用できません。幸いなことに、Elasticsearch には中国語の単語の分割をサポートするプラグインが組み込まれており、中国語の検索ニーズに簡単に対応できます。
ステップ 1: Elasticsearch をインストールする
まず、Elasticsearch がサーバーにインストールされ、実行されていることを確認する必要があります。 Elasticsearch の公式 Web サイト (https://www.elastic.co/) にアクセスして、最新のインストール パッケージと詳細なインストール手順を入手してください。
ステップ 2: Elasticsearch-php クライアントをインストールする
PHP で Elasticsearch を使用するには、Elasticsearch-php クライアントをインストールする必要があります。 Composer を使用することも、手動でダウンロードしてインストールすることもできます。
Composer を使用して Elasticsearch-php をインストールします。プロジェクトのルート ディレクトリにcomposer.json ファイルを作成し、次の依存関係を追加できます:
{
"require": {
"elasticsearch/elasticsearch" : "^7.0"
}
}
次に、ターミナルで「composer install」を実行して依存関係をインストールします。
手動でダウンロードしてインストールするには、Elasticsearch-php の Github ページ (https://github.com/elastic/elasticsearch-php) にアクセスし、最新の安定バージョンをダウンロードして、プロジェクトの PHP に抽出します。パス。
ステップ 3: Elasticsearch 接続を確立する
コードでは、まず Elasticsearch への接続を確立する必要があります。次のコードを使用できます:
use ElasticsearchClientBuilder;
$hosts = ['localhost:9200'];
$client = ClientBuilder::create()->setHosts( $hosts )->build();
ここではデフォルトの localhost:9200 接続アドレスが使用されますが、実際の状況に応じて調整する必要があります。
ステップ 4: インデックスを作成する
Elasticsearch では、データはインデックスに保存されます。まず、ドキュメントを保存するためのインデックスを作成する必要があります。 「my_index」という名前のインデックスは、次のコードを使用して作成できます。
$params = [
'index' => 'my_index', 'body' => [ 'settings' => [ 'analysis' => [ 'analyzer' => [ 'default' => [ 'type' => 'smartcn' ] ] ] ] ]
];
$client->indices()-> create($params);
ここでは、中国語の単語の分割をサポートする単語分割ツールである「smartcn」単語分割ツールを設定します。必要に応じて他のトークナイザーを選択することもできます。
ステップ 5: ドキュメントの挿入
次のコードを使用してドキュメントをインデックスに挿入できます:
$params = [
'index' => 'my_index', 'body' => [ 'title' => '中国的美食', 'content' => '中国有许多美食,如麻辣火锅、北京烤鸭等。', 'timestamp' => time() ]
];
$client->index($params);
ここに、タイトル、コンテンツ、タイムスタンプを含むドキュメントを挿入します。
ステップ 6: ドキュメントの検索
インデックスにデータがあれば、検索できます。次のコードを使用して検索できます:
$query = [
'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'content' => '火锅' ] ] ]
];
$response = $client->search($query);
print_r($response);
ここでは、キーワード「鍋」を含む文書を検索します。検索結果は配列形式で返されます。
結論
PHP で中国語の単語の分割や他の言語の検索要件を処理することは複雑ではなく、Elasticsearch と Elasticsearch-php の助けを借りて、完全な検索機能を簡単に実現できます。正しいトークナイザーを設定し、適切な検索クエリを構築することで、正確かつ効率的な検索結果を取得できます。この記事の具体的なコード例が、読者が中国語の単語の分割と他の言語での検索のニーズをよりよく理解し、適用するのに役立つことを願っています。
参考資料:
以上がphp Elasticsearch: 中国語の単語の分割と他の言語での検索要件を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。