【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 ...
随机推荐
- 应用c#读取带cookie的http数据
@(编程) private static string Login() { string url = string.Format("{0}/login-submit.html?identit ...
- HDU1963Investment(DP)
简单DP,题解见代码
- PowerDesigner反向生成Mysql数据原型
PowerDesigner反向生成Mysql数据原型 注意事项: (1)JVM 要32位的. (2)需配置JAVA_HOME环境变量指向所需JVM. (3)需配置CLASSPATH环境变量执行 MyS ...
- Unity3d:The requested item has been unloaded
问题描述:System.Xml类库下实例化的对象所有枚举类的值都显示如标题错误解决方案1:查看所在类是否:MonoBehaviour,如果没继承,添加即可.<ignore_js_op>
- 【转】Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
Android-Universal-Image-Loader 原文地址:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载 ...
- android ListView中的Item有Button时候点击异常处理
1.当ListView中有Button的时候往往会遇到很多问题,比较常见的一个问题是: 假设:在ListView中有N个Item当点击其中某个Item中的Button的时候,需要改变当前Button的 ...
- Ehcache(09)——缓存Web页面
http://haohaoxuexi.iteye.com/blog/2121782 页面缓存 目录 1 SimplePageCachingFilter 1.1 calculate ...
- Hadoop on Mac with IntelliJ IDEA - 8 单表关联NullPointerException
简化陆喜恒. Hadoop实战(第2版)5.4单表关联的代码时遇到空指向异常,经分析是逻辑问题,在此做个记录. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.5, Ha ...
- JSON初探
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- sql注入在线检測(sqlmapapi)
之前一搞渗透的同事问我.sqlmapapi.py是干啥的,我猜非常多人都玩过sqlmap,但玩过sqlmapapi的应该比較少,今天就和大家一起看看怎样使用以及一些美的地方. 说白了.sqlmapap ...