このトピックでは、PHP SDK を使用した基本的なドキュメント検索の環境を構成する方法と、サンプルコードについて説明します。
環境変数の構成
ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成します。
Alibaba Cloud アカウント (root ユーザー) の AccessKey ペアは、すべての API オペレーションにアクセスするために使用できます。API オペレーションの呼び出しや日常的な O&M の実行には、Resource Access Management (RAM) ユーザーを使用することを推奨します。RAM ユーザーの使用方法については、「RAM ユーザーの作成」をご参照ください。
AccessKey ペアの作成方法については、「AccessKey ペアの作成」をご参照ください。
RAM ユーザーの AccessKey ペアを使用する場合は、ご利用の Alibaba Cloud アカウントを使用して、必要な権限が AliyunServiceRoleForOpenSearch ロールに付与されていることを確認してください。詳細については、「AliyunServiceRoleForOpenSearch」および「アクセス承認ルール」をご参照ください。
ご利用の AccessKey ペアを、プロジェクトコードなど、他者が容易にアクセスできる資料に含めないことを推奨します。そうしないと、AccessKey ペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。
Linux および macOS
次のコマンドを実行します。
<access_key_id>および<access_key_secret>を、ご利用の RAM ユーザーの AccessKey ID と AccessKey Secret に置き換えます。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Windows
環境変数ファイルを作成し、そのファイルに ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を追加し、それらの環境変数をご利用の AccessKey ID と AccessKey Secret に設定します。
AccessKey ペアを有効にするには、Windows を再起動します。
構成を含むヘッダーファイルの作成
この構成ファイルは、その後のドキュメント検索およびプッシュ操作のヘッダーとして使用されます。AccessKey、ホスト、アプリケーション名、オプションなどの重要なパラメーターが含まれています。次のコードは例を示しています。
<?php
// ヘッダーファイルをインポートします。
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// ユーザー識別情報。
// 構成された AccessKey ID と AccessKey Secret を環境変数から読み取ります。
// コード例を実行する前に、環境変数を構成する必要があります。詳細については、「環境変数の構成」セクションをご参照ください。
// 対応する AccessKey ID に置き換えます。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// 対応する AccessKey Secret に置き換えます。
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// 対応するリージョンの API エンドポイントに置き換えます。エンドポイントは、コンソール内のアプリケーションの基本情報ページで確認できます。
$endPoint = '<region endPoint>';
// アプリケーション名に置き換えます。
$appName = '<app name>';
// デバッグモードを有効にします。
$options = array('debug' => true);
// OpenSearchClient クライアントオブジェクトを作成します。
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);
検索機能のデモ (完全版)
次に例を示します。
<?php
header("Content-Type:text/html;charset=utf-8");
// ヘッダーファイルをインポートします。
require_once("Config.inc.php");
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
$searchClient = new SearchClient($client);
// SearchParamsBuilder オブジェクトを作成し、対応するパラメーターを指定します。
$params = new SearchParamsBuilder();
$params->setStart(0);
$params->setHits(20);
// アプリケーション名を設定します。
$params->setAppName('Replace with your application name');
// クエリを設定します。
$params->setQuery("name:'search'");
// 戻り形式を設定します。
$params->setFormat("fulljson");
// ソートポリシーを追加します。
$params->addSort('id', SearchParamsBuilder::SORT_DECREASE);
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
// ドキュメントフィルター条件を設定します。
$params->setFilter('id>0');
// distinct 句を追加します。
$params->addDistinct(
array('key' => 'cate_id', 'distTimes' => 1, 'distCount' => 1, 'reserved' => 'false')
);
// まとめを追加します。
$params->addSummary(
array('summary_field' => 'name', 'summary_len' => 100, 'summary_ellipsis' => "...", 'summary_snippet' => 2, 'summary_element_prefix' => '', 'summary_element_postfix' => '')
);
//$params->addSummary(
// array('summary_field' => 'name', 'summary_len' => 200)
//);
// カスタムパラメーターを設定します。
//$params->setCustomParam('a', 'b');
//$params->setCustomParam('c', 'd');
//$params->setRouteValue('1');
// 関連する検索リクエストの from_request_id を設定します。
$params->setCustomParam('from_request_id','159851481919726888064081');
// 集計句を追加します。
$params->addAggregate(
array('groupKey' => 'cate_id', 'aggFun' => 'count()', 'range' => '1', 'aggSamplerThresHold' => 1, 'aggSamplerStep' => 10, 'maxGroup' => 10)
);
// $params->addAggregate(
// array('groupKey' => 'cate_id', 'aggFun' => 'count()', 'range' => '1', 'aggFilter' => 'id>1', 'aggSamplerThresHold' => 1, 'aggSamplerStep' => 10, 'maxGroup' => 10)
// );
// 基本ソート式を指定します。
$params->setFirstRankName('default');
// 高度ソート式を指定します。
$params->setSecondRankName('default');
// 返却するフィールドを設定します。
$params->setFetchFields(array('id','name','phone','int_arr','literal_arr','float_arr','cate_id'));
// raw_query パラメーターを追加します。
$params->setRawQuery("string");
// クエリを実行し、情報を返却します。
$ret = $searchClient->execute($params->build());
// 返却された情報の内容を出力します。
print_r(json_decode($ret->result,true));
// デバッグ情報を出力します。
echo $ret->traceInfo->tracer;