【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 ...
随机推荐
- CodeForces 7C Line
ax+by+c=0可以转化为ax+by=-c: 可以用扩展欧几里德算法来求ax1+by1=gcd(a,b)来求出x1,y1 此时gcd(a,b)不一定等于-c,假设-c=gcd(a,b)*z,可得z= ...
- CCS5 编译器手动设置dsp支持可变参数宏等问题
IDE:CSS5.4,compiler不支持可变参数宏.需要手动设置编译器相关选项: Language Option->Language Mode —>no strict ANSI. 1. ...
- thinkphp过滤html、script
使用tp3.1版本 1.APP/common 自定义函数 function filter_default(&$value){ $value = htmlspecialchars($value) ...
- [Java线程] Java线程池ExecutorService
示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...
- LDA(Latent Dirichlet Allocation)
转自:http://leyew.blog.51cto.com/5043877/860255#559183-tsina-1-46862-ed0973a0c870156ed15f06a6573c8bf0 ...
- heritrix启动问题修正
今天抽时间想看看其他蜘蛛的情况,于是下载了heritrix-1.14.2.搜索了一下相关的安装介绍.基本步骤如下: (1)解压下载的heritrix-1.14.2.zip的压缩包,如将其放在E:\da ...
- C++标准库概述 [转]
C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内 ...
- CSS hack 和 IE浏览器条件判断 集中汇总
(从死了一次又一次终于挂掉的百度空间中抢救出来的,发表日期 2014-08-16) 未完待续 css hack ie 浏览器判断语句 360大多数网页的各浏览器兼容方法: <!DOCTYPE h ...
- sql 将一个表中的数据插入到另一个表中
列名不一定要相同,只要你在HH中列出要插入列的列表跟select from mm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的. 比如:insert into h ...
- axTE3DWindowEx双屏对比控件白屏解决方法以及网上方法的校正(CreateControlOveride)
环境:vs2012,TE 6.5.1,winfrom C# 要做skyline的双屏显示功能,网上找到方法是用axTE3DWindowEx控件实现,把控件拖进去,运行,发现axTE3DWindow是正 ...