作者:阿里云用户outofmemory

昨天晚上收到了阿里云发的邮件,Open search可以申请公测了,于是迫不及待申请了测试,审核人员很高效,过了不到俩小时给批下来了。 
很开心,于是趁今天是周末,得把“outofmemory.cn”的全文检索,用open search实现一下。 汗! 之前用python实现的全文检索不是很稳定。
早上开工,先按照公测通过邮件的说明,新建了搜索应用,并做了激活。新建的搜索应用名称是“search4oom”, 意思是为outofmemory新建的搜索应用。
新建应用分为五个步骤:
1.第一个步骤需要填写下应用的名称和备注
2.第二个步骤需要设置搜索数据表的字段,需要设置字段的数据类型,是否是主键,是否支持多值(这个应该和solr的多值是一回事,意思是一个字段的值可以指定为一个数组),以及外表连接和多表join支持。 数据类型的下拉框中有TEXT,INT,FLOAT三种,数据类型有点少了,起码应该加上datetime,和string类型,对于一些时间敏感的应用可以方便的使用日期限定搜索,对于不需要参与索引的字符串字段应该设置为string类型。另外阿里云默认提供了咨询类,小说类,应用类和社区类搜索数据结构定义的模板,这个值得称赞,一般的应用都可以通过这四种模板稍作修改来支持。
3.第三步配置数据源,对于搜索应用同步索引离不开数据源,这一步很重要。 阿里云提供的数据源接入方式有两种一种是自动的,自动方式只支持阿里云自己的OSS和ODPS,由于我没用这两个产品,所以也就没有办法做自动导入索引数据了。 另外一种数据同步方式是“稍后手动上传”,这种方式可以手动传数据,可以通过sdk传数据。手动传数据只是一种测试手段,真实应用必须通过程序的sdk来做,目前支持的sdk有三种分别是java,php和.net。 前两种sdk文档已经写完了,.Net的尚没有文档。 选择“稍后手动上传”进入下一步
4.第四步是确认明细,会将前几步设置的应用信息,数据结构列出来确认一下
5.确认后就可以创建应用了
 
应用的创建过程很顺利,下一步需要手动来建索引了,因为我的网站是python开发的,而目前尚没有支持python的sdk,所以只有先看看帮助了,在帮助 中发现,阿里云提供了http的restful API,于是决定用python实现一个简单的sdk。 先看文档的授权说明部分,授权类似于OAuth2的授权,需要为请求生成一个token,token的生成算法用了mac-sha1。需要先在阿里云的开放搜索管理平台申请一个AccessKey, 申请很简单,按说明来就行,这里不赘述了。
下面进入python sdk的开发阶段,首先要实现的就是授权token的生成,由于我本人对java还比较熟悉所以下载了java的sdk,想先看下java sdk中的实现,下载了java的sdk jar包,然后在elicpse中新建了项目,并引用了此jar包,jar包中包含了完整的程序代码和注释,可以方便的查看授权的实现,值得称赞。 但是jar包中封装了junit,apache-commons等依赖jar包,显然是把sdk需要的jar包打到一个包里了,这样对于新手的好处是使用方便,但是把别人的包也打进来的做法不是很优雅,如果再提供一个简单版本,可以在maven中引用会更好一些,毕竟大家通常项目开发都是要用maven的。 经过一番探索,发现授权token生成的代码在com.opensearch.javasdk.CloudsearchClient类中的getAliyunSign方法中,按照此代码和官方授权部分的说明文档经过一番周折可以正常生成授权token了。
另外在管理后台还有设置搜索字段权重的功能,这一点很不错,我们可以根据需要设置不同字段的权重,但是这部分的没有找到相关的文档,有一些东西不是很理解,没有办法设置权重的表达式。
总体来讲,阿里云的开放搜索还是很值得期待的。 但是估计还有一些细节的东西需要调优。 另外对稳定性,和程序健壮性方面可能还需要进一步改善,在调试程序过程中发现几次“程序出现内部错误”的消息。
感谢阿里云提供的试用机会。

原文地址:http://bbs.aliyun.com/read/179261.html
参加活动:http://promotion.aliyun.com/act/aliyun/freebeta/

最新文章

  1. Android layout_weight理解
  2. 【Cocos2d-x for WP8 学习整理】(4)CCTableView 实现《天天爱消除》中的得分榜
  3. python字符串前面加r
  4. 手机设备连接eclipse的问题
  5. vim快捷键笔记【原创】
  6. Fragment碎片频繁来回切换的时候报java.lang.IllegalStateException: No activity
  7. html通用导航条制作
  8. 60秒找到最对的size?为服饰电商提供尺寸匹配解决方案的True Fit获1500万美元融资 | 36氪
  9. 合并JS和CSS
  10. Haskell开始
  11. Asp.Net Core Authentication Middleware And Generate Token
  12. static成员是可以被其所在class创建的实例访问!!!
  13. pug模板引擎(原jade)
  14. 【转】MySQL乐观锁在分布式场景下的实践
  15. RecyclerView下拉刷新上拉加载(三)—对Adapter的封装
  16. 推荐一些用CRF做图像语义分割的资源
  17. Airbnb/Apache Superset – the open source dashboards and visualization tool – first impressions and link to a demo
  18. Java先比较日期再比较时间
  19. hdu1003 Max Sum(最大子串)
  20. 日志系统的 ELK 的搭建

热门文章

  1. 【Linux笔记】Linux目录结构
  2. How to check “hasRole” in Java Code with Spring Security?
  3. UITextFiled,UIButton,UIImageView交互相互之间的事件拦截
  4. poj 3134 Power Calculus(IDA*)
  5. UI:UINavigationController、界面通信
  6. wikioi 1098 均分纸牌
  7. Django官方文档学习1——第一个helloworld页面
  8. Setting up Nutch 2.1 with MySQL to handle UTF-8
  9. 译 - EF 6秘诀(第二版) - 目录
  10. IE兼容CSS3圆角border-radius的方法(同时兼容box-shadow,text-shadow)