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

使用教程

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

准备工作

获取用户AccessKeyId和秘钥(secret)

用户可以使用阿里云的账号登录本系统,在登录完成后,点击“ACCESSKEY管理”可以查看您的Access Key ID(AccessKeyId)和 Access Key Secret(secret)。也可以在阿里云官网,点击“用户中心>我的服务>安全验证”即可到ACCESSKEY管理中心。

将SDK添加到项目中

使用OpenSearch SDK有两种方式:

  • 1.下载SDK源码包,在下载中心下载最新版的JAVA SDK到本地,并import 到您的工作目录中。
  • 2.引入OpenSearch SDK依赖,通过maven二方库依赖的方式将opensearch的sdk加入到自己的项目中。
    1. <dependencies>
    2. <dependency>
    3. <groupId>com.aliyun.opensearch</groupId>
    4. <artifactId>aliyun-sdk-opensearch</artifactId>
    5. <version>2.1.3</version>
    6. </dependency>
    7. </dependencies>

创建client

通过控制台也可以完成创建应用的操作,这里介绍一下如何使用SDK实现。这里使用import SDK的方式,使用上面获取的AccessKey和Secret实例化一个Opensearch Client(下面的操作里将继续使用如下的client),具体代码如下:

  1. import com.aliyun.opensearch.*;
  2. String accesskey= "您的阿里云的Access Key ID";
  3. String secret = "阿里云 Access Key ID 对应的 Access Key Secret";
  4. String appName = "您要创建的应用名称";
  5. Map<String, Object> opts = new HashMap<String, Object>();
  6. // 这里的host需要根据访问应用详情页中提供的的API入口来确定
  7. CloudsearchClient client = new CloudsearchClient(accesskey, secret , host, opts, KeyTypeEnum.ALIYUN);
  8. ## 上传文档
  9. OpenSearch的文档是一个json类型的字符串,结构如下:
  10. ```json
  11. [
  12. {
  13. fields”:{...},
  14. cmd”:"..."
  15. }
  16. ...
  17. ]

一条文档是由fields字段和cmd字段构成的一个结构体,其中fields字段内包含文档的核心数据,cmd表示针对此条文档所做的操作,对文档的操作包括添加(add),更新(update)和删除(delete)三种。一段文档示例如下:

  1. [
  2. {
  3. fields”: {
  4. id”: "0",
  5. summary”: "广大中小企业都有各种结构化的数据需要进行检索,目前一般采用数据库本身提供的搜索功能或者利用open source的搜索软件搭建,这样的做法不但会消耗网站本身的资源,性能也会很容易成为问题,而且相关性通常也不够好。我们的产品的目的是要利用阿里云先进的云计算和搜索技术向广大中小企业提供低成本,高质量,高性能,可定制的数据搜索解决方案。本项目和云搜索的通用解决方案目标略有不同,主要区别为本项目主要针对用户的结构化数据进行搜索,云搜索的通用解决方案则主要是针对网页型数据为处理对象。"
  6. },
  7. cmd”: "ADD"
  8. },
  9. {
  10. fields”: {
  11. id”: "1",
  12. summary”: "云搜索( Cloud Search Engine),是运用云计算( Cloud Computing)技术的搜索引擎,可以绑定多个域名,定义搜索范围和性质,同时,不同域名可以有不同UI和流程,这个UI和流程由运行在云计算服务器上的个性化程序完成。作为新型搜索引擎,与传统搜索引擎需要输入多个关键字不同的是,用户可以告诉搜索引擎每个搜索关键字的比重,每个搜索关键字都被置于“搜索云”中,并用不同大小,粗细的字型区分。 "
  13. },
  14. cmd”: "ADD"
  15. }
  16. ]

将文档上传到应用的某个表中的代码如下:

  1. CloudsearchDoc doc = new CloudsearchDoc(indexName, client);
  2. table_name = "要上传数据的表名";
  3. data = "[{"cmd":"add", "fields":{"id":"0","summary":"blabla..."}}]";
  4. System.out.println(doc.push(data, table_name));

另外还可以通过CloudsearchDoc类的提供的add、update、delete三个接口生成待上传的数据,最后在调用push方法将数据上传;

开始搜索

OpenSearch通过设置可以实现高度个性化的搜索需求,但通用的基本的搜索功能只需通过非常简单的设置即可实现:

  1. CloudsearchSearch search = new CloudsearchSearch(client);
  2. // 添加指定搜索的应用:
  3. search.addIndex("您的应用名称");
  4. // 指定搜索的关键词,这里要指定在哪个索引上搜索,如果不指定的话默认在使用“default”索引(索引字段名称是您在您的数据结构中的“索引到”字段。)
  5. search.setQueryString("'词典'");
  6. search.setQueryString("default:'词典'");
  7. search.setQueryString("index_name:'词典'");
  8. // 指定搜索返回的格式。
  9. search.setFormat("json");
  10. // 设定过滤条件
  11. search.addFilter("price>10");
  12. // 设定排序方式 + 表示正序 - 表示降序
  13. search.addSort("price", "+");
  14. // 返回搜索结果
  15. System.out.println(search.search());

调试

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

  1. //搜索类的调试信息调用接口
  2. System.out.println(search.getDebugInfo());
  3. //文档类的调试信息调用接口
  4. System.out.println(doc.getDebugInfo());
  5. //应用类的调试信息调用接口
  6. System.out.println(index.getDebugInfo());
本文导读目录