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

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

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

 

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

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

一直在考虑怎么实现,当看到阿里的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,关于非全部匹配的召回,希望可以尽快上线。

---已经排期,预计12月左右上线。

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

---以后会考虑把分词结果返回给用户,这样应该可以实现你的功能吧。

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

---目前的文档已经有详细的说明和各个feature的用户及适用场景,我理解你说的应该是怎么跟实际场景做对应吧,这部分我们会加强,你可以看下导入模板中是如何设计的,应该能明白。

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

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

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

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

      ACE服务其实已经有很多类似的服务提供商了,无论收费的还是免费的,  但是到现在为止还没有体验过,正好借着这次机会,来体验一下阿里云的ACE服务. ' !2NSv   /IQ$[WR cx   B ...

  2. 【阿里云产品公测】高大上的搜索服务OpenSearch,你值得拥有!

    [阿里云产品公测]高大上的搜索服务OpenSearch,你值得拥有! 作者:阿里云用户trcher ​ 一.前言: 在OpenSearch没出来之前,就一直想给网站做个搜索功能,虽然网站本身自带搜索功 ...

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

    [阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要求做一个类似百度或者谷歌的站内搜索功能.传统的sql查询只能使用like ...

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

    [阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...

  5. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

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

    [阿里云产品公测]PTS压力测试WP站搜索 作者:阿里云用户cnsjw PTS性能测试服务是一个非常非常强大的压力测试工具.可以模拟百人同时访问网站的情况,并监测ECS和RDS的各项指标,生成非常详细 ...

  7. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

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

    [阿里云产品公测]利用PTS服务优化网站数据库读写性能 作者:阿里云用户千鸟 写这个帖子主要也是因为在用PTS测试网站的时候,手动访问网站进入报错页面,主要原因是数据库连接对象存在问题,导致并发多的时 ...

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

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

随机推荐

  1. webapp开发中的一些注意的

    和大多数响应式的布局一样,webapp开发也是需要浮动布局和百分比布局,需要考虑的是小屏幕手机250px和大屏幕设备768px,但是习惯以320px和640px来分割,jq中的一句话$(functio ...

  2. IE6-IE9兼容性问题列表及解决办法总结

    IE6-IE9兼容性问题列表及解决办法总结 概述 第一章:HTML. 3 第一节:IE7-IE8更新... 31.如果缺少结束标记的 P 元素后跟 TABLE.FORM.NOFRAMES 或 NOSC ...

  3. CodeForces 213B Numbers

    $dp$,组合数. $dp[i][j]$表示只用数字$i$,$i+1$,$i+2$......,$9$,凑成长度为$j$的并且数字$i$到$9$符合要求的方案数.只要枚举数字$i$用几个就可以转移了. ...

  4. js 防止重复点击

    1.添加flag 适用于ajax 表单提交,提交之前flag = false , 提及中,true ,提交后false 2.事件重复点击: <script> var throttle = ...

  5. prop和attr的比较

    prop来获取或设置固有属性  removeProp()  删除固有属性 attr来获取或设置自定义属性     removeAttr() 删除自定义属性 案例:全选与全不选 <body> ...

  6. python prettytable模块

    简介 Python通过PrettyTable模块可以将输出内容如表格方式整齐地输出. 安装 pip install prettytable 1 示例 from prettytable import P ...

  7. hdu 1686 &amp; poj 2406 &amp; poj 2752 (KMP入门三弹连发)

    首先第一题 戳我穿越;http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意好理解,每组输入一个子串和一个母串,问在母串中有多少个子串? 文明人不要暴力 ...

  8. 【tp5】索引数组转成关联数组 ( $a=[],转换成 $a[&#39;aa&#39;=&gt;2,&#39;bb&#39;=&gt;&#39;3c&#39;] )

    概念: 索引数组 ==== >>>$arr = []; 关联数组 ====>>> $arr = [ 'orange'=>1,'apple'=>'good ...

  9. 关于《C++ Templates》

    最近买了<C++ Templates>来看,书最开始部分阐述了关于此书的一些编程风格.本人感觉非常好,有些地方之前一直容易搞混,这里却讲述的很清楚.例如: 关于下面几种风格的代码: voi ...

  10. 某DP题目3

    题意: 一根数轴上有n只怪物,第i个怪物所在的位置为ai,另有m个特殊点,第i个特殊点所在的位置为bi.你可以对怪物进行移动,若两怪物相邻,那么你不能把他们分开,移动时要看作一个整体.你可以选择向左或 ...