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

做者:阿里云用户啊里新人php

 

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

 

最近在开发一款机器人,但愿实现基本的聊天功能,词库是有的,可是若是是作彻底匹配这个出来的效果很悲催, java

  

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

若是问:你好?,这时候词库没有就没法回答。 json

 

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

以前没有研究过,只听过搜索引擎,因此我是这块的小白。感受很高大上,什么分词啊,匹配啊。。。专业名词我就不用了由于我不专业哈哈 数据结构

 

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

 

 

准备工做 测试

1   既然是公测天然的要申请公测资格这个就很少说了。如今申请仍是比较容易的。 ui

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.     
  5.     CloudsearchDoc cd=new CloudsearchDoc("test",cc);//这里两个参数一个是应用名,一个是客户端
  6.     Map fields=new HashMap<String, Object>();
  7.     fields.put("id", "1");
  8.     fields.put("wen", "你好么");
  9.     fields.put("da", "哈哈,很好");
  10.     //以上是按照本身的数据结构添加
  11.     
  12.     
  13.     cd.add(fields);//添加一条数据
  14.     
  15.     //这里须要说的是,能够添加多条,而后一块儿提交
  16.     
  17.     cd.push("main");//发送数据

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

 

  我上传了词库8000多条。 

 

搜索 

而后就是搜索的实现了 

 

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

 

相关文章
相关标签/搜索