【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案
【Open Search产品评测】--
淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案
[使用背景]
我们淘点点团队应该可以算是内网首批使用opensearch来搭建应用的团队了,在此之前,一直使用集团内一个基于lucene的引擎平台。对于淘点点特定的排序需求,都需要该团队配合升级,运维上共同维护。年初,集团推出Isearch5,然后又看到opensearch,一个基于Isearch5之上的搜索开放平台。听下来最令我们开心的就是:排序支持formula, 这样以后我们就可以自己写排序表达式,同时也可以动态调整排序参数,排序简简单单的一句“sort=RANK”就能让定制排序生效,就是方便。

[使用过程]
事实上,opensearch上手的确很快。看一下官网的帮助文档,创建出应用,定义好索引结构,调用其提供的sdk就能快速搭建搜索服务。当然,期间也会有很多细节问题和需求,这些通过opensearch团队的兄弟姐妹,都能快速解决。同时opensearch提供多种排序和过滤策略,完全自定义,能让我们在产品上进行多个维度上展现,底层只需要稍微修改下查询语句即可,非常方便。
[使用技巧]
如外卖场景,需要根据商家的配送范围进行外卖能力的筛选和判断,opensearch团队也推出了in_polygon插件,只需要商家将配送范围在地图上进行打标,转化为opensearch的多值double字段area_values,查询时调用in_polygon(lat,lon,area_values),其中lat\lon为当前用户坐标,即可实现界面上只展现能配送到用户指定位置的商家列表。
按距离排序或者过滤应该是O2O类搜索不可避免的需求,对此opensearch也提供了distinct的功能,能够用到filter、sort以及排序表达式中,对距离项进行过滤、排序或者算分加权。
还有一个疑难点,按照菜品、优惠券聚合功能,比如在店的维度有多个菜品、多张优惠券,展示时需要根据若干的条件优化到最优的一条,但又要展示出总条目,通过aggregate和distinct子句能够很好的实现这一条,不过在数据多表join的时候逻辑和数据比较冗余,会有些badcase出现,目前我们想办法优化这一点。
其他还有按配送时间段自动过滤、按配送费排序等等,opensearch目前也正在支持我们做商圈的过滤,相信淘点点也会功能越来越强大。

[意见及建议]
现在用下来,觉得opensearch有几点需要改进的:
1. 即时更新的速度:现在基本是在1分钟内可以完成doc的更新。这对于一些实时性要求较高的场合是不友好的。这点opensearch团队已经在推秒级的即时更新了,期望能快速用上;
Opensearch解答:秒级更新正在开发中,近期就会上线。
2. 更新的doc可以通过api推送,但是推送的doc没有时间戳的概念,这就必须要求我们自己保证推送的doc是有序的,这样推送doc就只能用单台机器来做,对于qps高的场合我们很希望能用多台机器来做,因为有了时间戳,引擎底层就可以把doc按序拼好;
Opensearch解答:该功能已经在规划中,敬请期待。
[总结]
总之,使用opensearch还是非常满意的,响应速度非常好,有些细节问题都能及时解决,对于O2O类搜索场景也已经提供了一整套的解决方案。还大大节省了我们的运维成本,搞个活动神马的QPS突增都不需要操心机器问题。至此,3月基于openseach的外卖搜索上线,此后代金券搜索,菜品搜索,吃货相册,公共搜索等已陆续上线。
希望 Opensearch 越做越好,给我们带来更多的便利。
淘点点:http://www.taobao.com/market/dd/index.php
微博互动地址:http://weibo.com/1644971875/Bj9KhesC3?mod=weibotime
【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案的更多相关文章
- 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎
[Open Search产品评测]-- 来往,7天轻松定制属于自己的搜索引擎 [使用背景] 相信很多人都遇到过要给网站或者app做一个搜索功能的需求,很久之前自己折腾过lucene,搞了很久, ...
- 【阿里云产品评测】小站长眼中的巅峰云PK
[阿里云产品评测]小站长眼中的巅峰云PK 阿里云论坛用户:昵称-a5lianmeng 笔者是一名小站长,因狂热互联网,而在毕业后由宅男逐渐进入站长队伍,在毕业后的几年间,经营6个流量类网站,身为站长, ...
- Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结 1. Sql语言应该得到更大的范围的应用,1 1.1. 在小型系统项目中,很适合存储过程写业务逻辑2 1.2. 大型 ...
- odoo 基于SQL View视图的model类
在做odoo的过程中,会涉及到多表的查询, 尤其是做报表的时候这种情况更甚,这样下来会做很多的关联,不是很方便.odoo提供了一种机制,即基于视图的model类.代码地址在这里. 具体过程如下: 1. ...
- 基于fork(),execvp()和wait()实现类linux下的bash——mybash
基于fork(),execvp()和wait()实现类linux下的bash--mybash 预备知识 fork():fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可 ...
- 基于Windows下浏览器无法正常打开的解决方案
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...
- 基于支付系统真实场景的分布式事务解决方案效果演示: http://www.iqiyi.com/w_19rsveqlhh.html
基于支付系统真实场景的分布式事务解决方案效果演示:http://www.iqiyi.com/w_19rsveqlhh.html
- 基于JavaMail开发邮件发送器工具类
基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...
- Python 基于urllib.request封装http协议类
基于urllib.request封装http协议类 by:授客QQ:1033553122 测试环境: Python版本:Python 3.3 代码实践 #!/usr/bin/env python ...
随机推荐
- JQuery中attr ,html,text,val,的一些用法
attr:主要获取元素内部的属性,返回 的是属性值 html:返回当前元素(不包括他自己本身的标签,但是可以返回他自己的)的标签加上内容.仅限于返回第一个. text:和 .html() 方法不同, ...
- UVaLive 6608 Cabin Baggage (水题)
题意:给定四个数代表长宽高和重,问你是不是满足下面条件,长不高于56,宽不宽于45,高不高于25,或者总和不大于125,并且重量不高于7. 析:判断输出就好,注意这个题是或,不要想错了. 代码如下: ...
- CreateEvent的用法
事件对象就像一个开关:它只有两种状态---开和关.当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”.可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该 ...
- 如何为C语言添加一个对象系统
为C语言添加OO能力的尝试从上世纪70年代到现在一直没有停止过,除了大获成的C++/Objective-C以外,还有很多其它的成功案例,比如GTK在libg中实现了一个对象系统,还有前几年一个OOC, ...
- url中的scheme
iPhone上URL Schemes的作用为应用程序提供了一个其他应用程序或者safari可以启动他的方法. --http://blog.sina.com.cn/s/blog_5673c12f0100 ...
- AP(应付帐管理)
--更新供应商地点 PROCEDURE update_vendor_site(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false, x_return ...
- CANBus Determining Network Baud Rate, Automatic bit-rate detection
http://www.canbushack.com/blog/index.php?title=determining-network-baud-rate Determining Network Bau ...
- TMS3705A PCF7991AT 线路图
- uva301 - Transportation
Transportation Ruratania is just entering capitalism and is establishing new enterprising activiti ...
- CentOS 6.4安装本地yum源,并安装X Window System
1.为DVD创建一个挂载目录 [root@localhost ~]# mkdir /media/CentOS 2.在Linux下挂载CentOS DVD(虚拟机挂载DVD不说了,应该都会) [root ...