更新时间:2017-06-07 13:26
应用文档操作类,包含推送文档,删除文档,更新文档,批量推送文档等。
$docs
参数名称 | 类型 | 描述 |
---|---|---|
$docs | array | 需上传处理的doc集合 |
void OpenSearch\Client\DocumentClient::__construct($openSearchClient)
参数名称 | 类型 | 描述 |
---|---|---|
$openSearchClient | \OpenSearch\Client\OpenSearchClient | 基础类,负责计算签名,和服务端进行交互和返回结果。 |
这条文档只是增加到sdk client buffer中,没有正式提交到服务端,只有调用了commit方法才会被提交到服务端。
可以add多次,然后调用commit() 统一提交。
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::add( $fields)
参数名称 | 类型 | 描述 |
---|---|---|
$fields | array | 一条文档的所有字段,例如array("id" => 1, "name" => "tony"); |
这条文档只是增加到sdk client buffer中,没有正式提交到服务端;只有调用了commit方法才会被提交到服务端。你可以update多次然后调用commit() 统一提交。
标准版不支持update操作,也不支持部分字段更新,标准版的新增和更新都是通过add实现。
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::update( $fields)
参数名称 | 类型 | 描述 |
---|---|---|
$fields | array | 一条文档的所有字段,例如array("id" => 1, "name" => "tony"); |
这条文档只是增加到sdk client buffer中,没有正式提交到服务端,只有调用了commit方法才会被提交到服务端。
可以remove多次然后调用commit() 统一提交。
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::remove( $fields)
参数名称 | 类型 | 描述 |
---|---|---|
$fields | array | 一条文档的主键字段,例如array("id" => 1);,删除只需指定doc主键值即可。 |
此操作会同步发送到服务端。
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::push( $docsJson, $appName, $tableName)
参数名称 | 类型 | 描述 |
---|---|---|
$docsJson | string | 文档list的json,例如[{"cmd":"ADD","fields":{"id":"1","name":"tony"}},…] |
$appName | string | 指定的app name或者app ID |
$tableName | string | 指定的table name |
在发送之前会把buffer中的文档清空,所以如果服务端返回错误需要重试的情况下,需要重新生成文档并commit,避免丢数据的可能。
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::commit( $appName, $tableName)
参数名称 | 类型 | 描述 |
---|---|---|
$appName | string | 指定的app name或者app ID |
$tableName | string | 指定的table name |
支持单独推送一条文档到客户端缓存中
\OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::pushOneDoc( $fields, $cmd)
参数名称 | 类型 | 描述 |
---|---|---|
$fields | array | 一条文档的所有字段,例如array("id" => 1, "name" => "tony"); |
$cmd | string | 文档的操作类型,有ADD, UPDATE(标准版不支持)和DELETE; |
主要文档推送代码样例,将内部关键信息替换后,即可运行测试,部分头文件内容在,使用教程,页面中有描述,例如 Config.inc.php 头文件。
<?php
//引用头部文件
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//设置数据推送到对应应用表中
$tableName = '替换应用表名';
//创建文档操作client
$documentClient = new DocumentClient($client);
//添加一条文档信息
//$json = json_encode(array(array("cmd" => "add", "fields" => array("id" => 1, "name" => "php opensearch"))));
//使用循环创建多个测试文档信息
$docs_to_upload = array();
for ($i = 0; $i < 10; $i++){
$item = array();
$item['cmd'] = 'ADD';
$item["fields"] = array(
"id" => $i + 1,
"name" => "搜索".$i
);
$docs_to_upload[] = $item;
}
//将内容编码成json格式
$json = json_encode($docs_to_upload);
//推送文档到应用中
$ret = $documentClient->push($json, $appName, $tableName);
//打印返回消息
print_r(json_decode($ret->result, true));
//打印调试信息
echo $ret->traceInfo->tracer;
通过上面的操作我们已经可以使用基本的搜索功能了,但是优化搜索、提高搜索结果相关性是一个漫长的的过程,需要我们不断试错和迭代来一点点改进。在这个过程中如果遇到问题或者发现结果与预期不一致时可以通过下面的接口获得请求的详细信息,可以通过这些信息排查问题。特别是当遇您到问题,在旺旺群、钉钉群中寻求帮助的时候,根据调试信息我们可以迅速帮您定位到问题所在。
echo $ret->traceInfo->tracer;
在文档使用中是否遇到以下问题
更多建议
匿名提交