全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
开放搜索

使用教程

更新时间:2017-06-12 09:22:32

快速开始

使用openSearch提供搜索功能十分简单,下面带大家迅速上手

准备工作

登录控制台创建应用

  • 手动在控制台根据实际业务需要创建对应表结构及其它相关配置,例如:索引,属性,数据源,过滤条件等。
  • 下载此处我们提供的测试 标准版应用结构模板,在创建应用结构时,选择“通过模板创建应用结构”,然后下一步,再选择左上角的“导入模板”,上传此处下载的应用结构模板,一直下一步直到完成。【此应用结构测试模板,可适用于标准版Php SDK文档中的搜索及推送数据Demo代码】

获取AccessKey和Secret

登录http://opensearch.console.aliyun.com ,点击 ACCESSKEY管理 查看是否已经创建了阿里云 access key id和access key secret。如果没有创建,则点击创建一套id和secret

下载php SDK并添加到项目中

在左侧栏“相关下载”页面中下载v3版 php SDK包,并根据需编写具体功能需要,添加如下头文件内容到项目中,具体参考Demo中各功能实现的代码样例

主要功能头文件集合<参考>

主要功能包含,查询应用信息,查询应用文档,推送文档,下拉提示等,依赖的头文件,引用对应功能的头文件后就可以编写对应功能及对象方法调用。

  1. <?php
  2. //Config 页面,头文件,包含AK,host,应用名,下拉名称 及 options 等信息
  3. require_once("../OpenSearch/Autoloader/Autoloader.php");
  4. use OpenSearch\Client\OpenSearchClient;
  5. //获取应用列表,头文件
  6. require_once("Config.inc.php");
  7. use OpenSearch\Client\AppClient;
  8. use OpenSearch\Generated\Common\Pageable;
  9. //查询文档,头文件
  10. require_once("Config.inc.php");
  11. use OpenSearch\Client\SearchClient;
  12. use OpenSearch\Util\SearchParamsBuilder;
  13. //推送文档,头文件
  14. require_once("Config.inc.php");
  15. use OpenSearch\Client\DocumentClient;
  16. //下拉提示,头文件
  17. require_once("Config.inc.php");
  18. use OpenSearch\Client\SuggestClient;
  19. use OpenSearch\Util\SuggestParamsBuilder;

主要功能client集合<参考>

我们先实例化一个SDK客户端client,在编写对应功能时会使用到它。

  1. <?php
  2. //引用配置头文件
  3. require_once("Config.inc.php");
  4. //创建用于获取应用列表client
  5. $appClient = new AppClient($client);
  6. //创建用于查询文档client
  7. require_once("Config.inc.php");
  8. $searchClient = new SearchClient($client);
  9. //创建用于推送文档client
  10. require_once("Config.inc.php");
  11. $documentClient = new DocumentClient($client);
  12. //创建用于下拉查询client
  13. require_once("Config.inc.php");
  14. $suggestClient = new SuggestClient($client);

创建Config配置头文件

Config 页面中的内容将作为后续的查询推送文档的头文件,其中包含AK,host,应用名,下拉名称 及 options 选项,等重要参数信息

  1. <?php
  2. //引入头文件
  3. require_once("../OpenSearch/Autoloader/Autoloader.php");
  4. use OpenSearch\Client\OpenSearchClient;
  5. //替换为对应的access key id
  6. $accessKeyId = '<Your accessKeyId>';
  7. //替换为对应的access secret
  8. $secret = '<Your secret>';
  9. //替换为对应区域api访问地址,可参考应用控制台,基本信息中api地址
  10. $endPoint = '<region endPoint>';
  11. //替换为应用名
  12. $appName = '<app name>';
  13. //替换为下拉提示名称
  14. $suggestName = '<suggest name>';
  15. //开启调试模式
  16. $options = array('debug' => true);
  17. //创建OpenSearchClient客户端对象
  18. $client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);

上传文档格式

在上面代码的基础上我们继续使用DocumentClient类对象向刚创建的应用中上传一些文档,应用名称继续使用上面config页面中的的$appName。OpenSearch应用中的文档是一个json类型的字符串,结构如下:

此处的应用文档格式,在应用控制台中的,上传文件按钮,参考样例数据,可以下载对应的完整文档数据格式,可直接通过上传此处,下载的文件到应用中进行搜索

  1. [
  2. {
  3. "fields":{},
  4. "cmd":""
  5. }
  6. ...
  7. ]

cmd字段可选的值为:ADD、DELETE、UPDATE(标准版应用,不支持UPDATE,新增和更新都通过ADD实现,也不支持部分字段更新),分别表示添加、删除以及更新一条文档;

fields字段内包含文档本身的字段属性,比如在一个小说应用的结构中可能包含以下字段:title:小说的名字,body:小说主体内容,url:访问小说的地址等。

完整示例代码

可以下载V3 版PhpSDK,并解压到下面代码文件的同级目录中,然后直接复制下面代码,将其中的access key和secret替换成自己的,以及替换其它关键信息,就可以体验一下OpenSearch了。

  1. <?php
  2. header("Content-Type:text/html;charset=utf-8");
  3. //引用头部文件
  4. require_once("Config.inc.php");
  5. use OpenSearch\Client\DocumentClient;
  6. use OpenSearch\Client\SearchClient;
  7. use OpenSearch\Util\SearchParamsBuilder;
  8. //设置数据需推送到表名
  9. $tableName = '替换为应用表名';
  10. //创建文档操作client
  11. $documentClient = new DocumentClient($client);
  12. //添加文档数据
  13. $docs_to_upload = array();
  14. for ($i = 0; $i < 10; $i++){
  15. $item = array();
  16. $item['cmd'] = 'ADD';
  17. $item["fields"] = array(
  18. "id" => $i + 1,
  19. "name" => "搜索".$i
  20. );
  21. $docs_to_upload[] = $item;
  22. }
  23. // 编码
  24. $json = json_encode($docs_to_upload);
  25. //提交推送文档
  26. $ret = $documentClient->push($json, $appName, $tableName);
  27. // 实例化一个搜索类
  28. $searchClient = new SearchClient($client);
  29. // 实例化一个搜索参数类
  30. $params = new SearchParamsBuilder();
  31. //设置config子句的start值
  32. $params->setStart(0);
  33. //设置config子句的hit值
  34. $params->setHits(20);
  35. // 指定一个应用用于搜索
  36. $params->setAppName('替换为应用名');
  37. // 指定搜索关键词
  38. $params->setQuery("name:'搜索'");
  39. // 指定返回的搜索结果的格式为json
  40. $params->setFormat("fulljson");
  41. //添加排序字段
  42. $params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
  43. // 执行搜索,获取搜索结果
  44. $ret = $searchClient->execute($params->build());
  45. // 将json类型字符串解码
  46. print_r(json_decode($ret->result,true));
  47. //打印调试信息
  48. echo $ret->traceInfo->tracer;

调试

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

  1. echo $ret->traceInfo->tracer;
本文导读目录