全部产品
开放搜索

DocumentClient客户端

更新时间:2017-06-07 13:26:11   分享:   

功能简介

应用文档操作类,包含推送文档,删除文档,更新文档,批量推送文档等。

SDK缓存的文档集合

类属性

  1. $docs

参数描述

参数名称 类型 描述
$docs array 需上传处理的doc集合

构造函数

函数定义

  1. void OpenSearch\Client\DocumentClient::__construct($openSearchClient)

参数描述

参数名称 类型 描述
$openSearchClient \OpenSearch\Client\OpenSearchClient 基础类,负责计算签名,和服务端进行交互和返回结果。

增加一条文档

这条文档只是增加到sdk client buffer中,没有正式提交到服务端,只有调用了commit方法才会被提交到服务端。

可以add多次,然后调用commit() 统一提交。

函数定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::add( $fields)

参数描述

参数名称 类型 描述
$fields array 一条文档的所有字段,例如array("id" => 1, "name" => "tony");

修改一条文档

这条文档只是增加到sdk client buffer中,没有正式提交到服务端;只有调用了commit方法才会被提交到服务端。你可以update多次然后调用commit() 统一提交。

标准版不支持update操作,也不支持部分字段更新,标准版的新增和更新都是通过add实现。

函数定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::update( $fields)

参数描述

参数名称 类型 描述
$fields array 一条文档的所有字段,例如array("id" => 1, "name" => "tony");

删除一条文档

这条文档只是增加到sdk client buffer中,没有正式提交到服务端,只有调用了commit方法才会被提交到服务端。

可以remove多次然后调用commit() 统一提交。

函数定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::remove( $fields)

参数描述

参数名称 类型 描述
$fields array 一条文档的主键字段,例如array("id" => 1);,删除只需指定doc主键值即可。

批量推送文档

此操作会同步发送到服务端。

函数定义

  1. \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

提交client buffer中缓存文档到服务端

在发送之前会把buffer中的文档清空,所以如果服务端返回错误需要重试的情况下,需要重新生成文档并commit,避免丢数据的可能。

函数定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DocumentClient::commit( $appName, $tableName)

参数描述

参数名称 类型 描述
$appName string 指定的app name或者app ID
$tableName string 指定的table name

推送一条文档到客户端buffer中

支持单独推送一条文档到客户端缓存中

函数定义

  1. \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 头文件。

  1. <?php
  2. //引用头部文件
  3. require_once("Config.inc.php");
  4. use OpenSearch\Client\DocumentClient;
  5. //设置数据推送到对应应用表中
  6. $tableName = '替换应用表名';
  7. //创建文档操作client
  8. $documentClient = new DocumentClient($client);
  9. //添加一条文档信息
  10. //$json = json_encode(array(array("cmd" => "add", "fields" => array("id" => 1, "name" => "php opensearch"))));
  11. //使用循环创建多个测试文档信息
  12. $docs_to_upload = array();
  13. for ($i = 0; $i < 10; $i++){
  14. $item = array();
  15. $item['cmd'] = 'ADD';
  16. $item["fields"] = array(
  17. "id" => $i + 1,
  18. "name" => "搜索".$i
  19. );
  20. $docs_to_upload[] = $item;
  21. }
  22. //将内容编码成json格式
  23. $json = json_encode($docs_to_upload);
  24. //推送文档到应用中
  25. $ret = $documentClient->push($json, $appName, $tableName);
  26. //打印返回消息
  27. print_r(json_decode($ret->result, true));
  28. //打印调试信息
  29. echo $ret->traceInfo->tracer;

调试

通过上面的操作我们已经可以使用基本的搜索功能了,但是优化搜索、提高搜索结果相关性是一个漫长的的过程,需要我们不断试错和迭代来一点点改进。在这个过程中如果遇到问题或者发现结果与预期不一致时可以通过下面的接口获得请求的详细信息,可以通过这些信息排查问题。特别是当遇您到问题,在旺旺群、钉钉群中寻求帮助的时候,根据调试信息我们可以迅速帮您定位到问题所在。

  1. echo $ret->traceInfo->tracer;
本文导读目录
本文导读目录
以上内容是否对您有帮助?