【阿里云产品公测】开放搜索服务 opensearch java jdk 应用体验之 机器人聊天

作者:阿里云用户啊里新人

需求:基本实现智能聊天!

最近在开发一款机器人,希望实现基本的聊天功能,词库是有的,但是如果是做完全匹配这个出来的效果很悲催,

 

比如词库:你好,回答是:哈哈,很好啊.

如果问:你好?,这时候词库没有就无法回答。

一直在考虑怎么实现,当看到阿里的opensearch之后就感觉:这个就是我想要的

之前没有研究过,只听过搜索引擎,所以我是这块的小白。感觉很高大上,什么分词啊,匹配啊。。。专业名词我就不用了因为我不专业哈哈

按照惯例依然附上一张 实现效果图:

 

 

准备工作

1   既然是公测自然的要申请公测资格这个就不多说了。现在申请还是比较容易的。

2   然后就是去看看他的帮助文档了。opensearch的帮助文档相对其他产品的帮助文档要详细很多。包括快速入门,详细说明,相信小白跟着文档就可以慢慢弄明白。

3    既然是java sdk 体验那么肯定就是下载 java sdk了。很简单在下载中心直接下载就可以了。(下载中心在控制台,这个貌似和别的公测产品不一样)

这里就不贴好多图了。建议去看一下文档非常详细的。

开始体验

既然是要应用到我的应用,当然要在本地测试一下,

opensearch是对外网的,所以来说不止针对阿里云的用户可以使用,只要你有搜索的需求都可以使用

首先当然是新建一个项目,当然你也可以直接在你的项目中直接测试。

然后将sdk导入项目。

(以上感觉都是都废话哈啊哈)

在做下步之前最好吧这个文档看一下  点击这里

我们会用到的几个类文件就在这里了,

其中包括几个主要操作,

创建应用,设置应用

以上两个操作建议在控制台直接修改,这样更直观,包括设置主键,多表。搜索项等等。这里参考 官方文档吧。我没有使用sdk常见应用。(用最短的时间实现功能才是我的需求)

上传数据,更新数据

应用创建完毕肯定要上传数据的,这里阿里提供了一个很好的地方就是根据你设置的数据可是生成几个模板,你可以下载,然后看一下应该组装为什么样子的。

我的数据格式很简单

搜索体验,简单就好!

只有一张主表,三个字段,id主键,wen:问话,用来搜索。 da:回答,用来回答的内容,不会建立索引。

  1. //看到实例化的方法有好几个,但是别的不知道怎么实现
  2. //这里实例化的时候我使用的是这个方法,因为的是阿里云的账号,从控制台获取 key secret就可以了。剩下两个一个我填空,一个是固定值
  3. CloudsearchClient cc = new CloudsearchClient(key, secret, null, KeyTypeEnum.ALIYUN);
  4. CloudsearchDoc cd=new CloudsearchDoc("test",cc);//这里两个参数一个是应用名,一个是客户端
  5. Map fields=new HashMap<String, Object>();
  6. fields.put("id", "1");
  7. fields.put("wen", "你好么");
  8. fields.put("da", "哈哈,很好");
  9. //以上是按照自己的数据结构添加
  10. cd.add(fields);//添加一条数据
  11. //这里需要说的是,可以添加多条,然后一起提交
  12. cd.push("main");//发送数据

上传文档其实很简单,我使用了最简单的实现。

我上传了词库8000多条。

搜索

然后就是搜索的实现了

  1. //看到实例化的方法有好几个,但是别的不知道怎么实现
  2. //这里实例化的时候我使用的是这个方法,因为的是阿里云的账号,从控制台获取 key secret就可以了。剩下两个一个我填空,一个是固定值
  3. CloudsearchClient cc = new CloudsearchClient(key, secret, null, KeyTypeEnum.ALIYUN);
  4. String resultJson = "";
  5. String resultDa = "";
  6. try {
  7. CloudsearchSearch search = new CloudsearchSearch(cc);
  8. List<String> indexList = new ArrayList<String>();
  9. indexList.add("duihua");// 这里是简历应用的名字
  10. search.addIndex(indexList);//将应用索引加入,这里是可以加入多个的
  11. search.setQueryString("default:‘你吃饭了么?‘");//搜索制定的次
  12. search.setFormat("json");//返回格式,我还是比较喜欢json
  13. resultJson = search.search();
  14. } catch (MalformedURLException e1) {
  15. e1.printStackTrace();
  16. } catch (IOException e1) {
  17. e1.printStackTrace();
  18. }
  19. System.out.println(resultJson);

只有以上这几行就实现了搜索功能功能。

这就基本实现了我的功能是不是好简单。几行代码实现了一个高大上的搜索引擎,以前是想都不敢想的。

体验总结

当然也是有些问题,就是目前搜索的召回是全匹配,感觉不太好,一下是图

这里第三个搜索竟然是没有结果的,这这这!!怎么可以,这个问题在论坛已经提问了 连接 ,官方回答是马上就会上这个功能,表示很期待。

弄到这里,难道我的聊天计划要泡汤了!!?》??怎么可以!!

认真了的查看了一下文档,在群里询问了大拿,搜索语法支持或操作,default:‘你吃饭‘|‘了么‘  这种实现就可以实现或的召回!

那么问题来了!!  这个分词怎么搞!!阿里云没有专门的分词接口啊!!!只能去去搜!!

免费的分词api,百度第一条就是,很幸福的去测试了。可以用大家需要也可以试试

http://5.tbip.sinaapp.com/api.php?str=%E6%98%8E%E5%A4%A9%E6%98%9F%E6%9C%9F%E5%A4%A9&type=str

这个是在sae上部署的。(后来很悲催的发现,竟然有频率限制,稍微快一些就609.。。我去) 只好放弃。

继续寻找百般努力之下终于又找到一个

http://www.xunsearch.com/scws/api.php

经过测试,这个可以用。。

然后就是集成到我的机器人了

效果你们也看到了机器人的集成就不贴了哈哈。反正是现在实现了功能。

另外在体验的过程中,感觉有个地方很是高大上,需要一定的基础才能搞定,那就是排序的算法问题,

opensearch支持复杂的算法,实现你不同的排序需求,

目前这块还没有搞定,感觉需要一个慢慢的了解过程,不过目前的默认模式已经基本满足我的需求。

建议&意见

1,关于非全部匹配的召回,希望可以尽快上线。

2,是否可以开放分词接口,

3,排序算法上是否可以有更多的文档给予一定的讲解,很多人这方面还是比较弱的

4,文档的管理不知道是否可以做一个展示,比如我有8000调数据,是否可以有个地方让我看到都添加了什么数据。

5,opensearch 应该是支持外部网站使用的,但是在文档上没有体现,我在实例化的时候就出现了一些问题,建议这块做一些说明。

原文地址:http://bbs.aliyun.com/read/179921.html

参加活动:http://promotion.aliyun.com/act/aliyun/freebeta/

时间: 10-22

【阿里云产品公测】开放搜索服务 opensearch java jdk 应用体验之 机器人聊天的相关文章

【阿里云产品公测】在ACE上部署WP测试体验

ACE服务其实已经有很多类似的服务提供商了,无论收费的还是免费的, 但是到现在为止还没有体验过,正好借着这次机会,来体验一下阿里云的ACE服务. ' !2NSv   /IQ$[WR cx   BUCPO}I  首先开通之后,要先建一个app, ).)^\    qTrM*/m:]L   kyi"U A82  虽然只是测试一下,但是这里还是根据推荐选了集群模式和弹性扩展~~ 2T?8{yO7  估计是因为以后这些会产生额外的费用,所以并没有成为默认选项. gy1R.SN   *(s0X[-   o

【阿里云产品公测】大数据下精确快速搜索OpenSearch

[阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要求做一个类似百度或者谷歌的站内搜索功能.传统的sql查询只能使用like 或者FIND_IN_SET来实现.后者性能稍微好点但是必须要逗号分隔才可以实现匹配.甚至多条件的话还可能用到OR这是极影响系统性能的. 最近公司项目需要.主要是系统查询缓慢.并且查询精度不敢恭维.一开始想到的是Lucene 毕竟是一个开放源代码的全文检索引擎工具包 并且官方还在持续更新中.当时闲暇时

【阿里云产品公测】简单日志服务SLS使用评测 + 教程

[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x64 日志环境: Nginx(v1.6.2) HTTP服务器访问日志.服务器系统日志 评测人: mr_wid 评测时间: 2014年9月28日-2014年10月8日 准备工作 一.知彼知己, 百战不殆.对产品的了解程度, 直接决定着评测质量, 在评测前, 笔者首先整理并详细阅读了有关SLS产品以及关联

【阿里云产品公测】PTS压力测试WP站搜索

[阿里云产品公测]PTS压力测试WP站搜索 作者:阿里云用户cnsjw PTS性能测试服务是一个非常非常强大的压力测试工具.可以模拟百人同时访问网站的情况,并监测ECS和RDS的各项指标,生成非常详细的报告.可以自由设定各种测试脚本,场景以及任务,并让任务计划执行,只要在执行之后过来查看报告就可以了~~~ 首先第一步就是要先选择要测试的服务器,这里选择了在杭州的ECS和RDS服务. 打算测试的是搜索功能,随意设置了10个关键词,顺序执行测试. 首先先要新建一个测试脚本: 参数是一个CSV文件,然

【阿里云产品公测】利用PTS服务优化网站数据库读写性能

[阿里云产品公测]利用PTS服务优化网站数据库读写性能 作者:阿里云用户千鸟 写这个帖子主要也是因为在用PTS测试网站的时候,手动访问网站进入报错页面,主要原因是数据库连接对象存在问题,导致并发多的时候产生故障,于是简单分析了一下数据库读写的性能优化以及利用PTS的测试结果,整理出来和大家分享一下,顺便参加一下这个活动.        几乎所有的网站都需要数据库来存储网站中的相关信息,因此在网站应用与数据库的交互过程中,数据库数据读取的性能对网站整体的性能是至关重要的. ?      通常我们在

【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实时访问.NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展.OTS应用程序可以使用阿

【阿里云产品公测】离线归档OAS,再也不用担心备份空间了

[阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步  1.1 初识OAS  啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Service,简称OAS),致力于提供低成本.高可靠的数据归档服务,适合于大数据的长久归档备份. 低成本.高可靠,长久归档备份,这是它的特色.  1.2 申请开通 当前还处于公测阶段,需要申请,试用期间,免费试用,每个用户可以存储不超过10T的数据,并且文件数量不超过10万个,大伙有什么超大文件,没地

【阿里云产品公测】阿里云ACE部署通用完整教程及评测

[阿里云产品公测]阿里云ACE部署通用完整教程及评测 作者:阿里云用户bailimei ACE应该是目前在公测的服务中应用最广泛的一项服务.在公测云引擎ACE前曾使用过新浪SAE,而ACE给我的最初印象是比SAE要简单易用的多,除了上传文件需用SVN外,其它就像在用ECS+RDS,体验上没多大差别,因我现在就用着这两项产品,所以感觉比较直观.原先已有同学写了一些优秀的ACE教程,对分享自己的体验我们都应该点赞.下面以测试部署wordpress为例,重点对ACE使用过程中遇到的难点问题展开说明,并

【阿里云产品公测】云引擎ACE新手实战基于Wordpress

[阿里云产品公测]云引擎ACE新手实战基于Wordpress 作者:阿里云用户imnpc ACE(Aliyun Cloud Engine) 是一款弹性.分布式的应用托管环境,支持Java.php多种语言环境.帮助开发者快速开发和部署服务端应用程序,并且简化了系统维护工作.搭载了丰富的分布式扩展服务,为应用程序提供强大助力. ACE(Aliyun Cloud Engine)目前最大的优点就是免费,预计以后也会照着SAE JAE等同类服务提供低廉的收费政策. 一般来说我们用于云平台的很多人都是简单安