【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类搜索解决方案的更多相关文章

  1. 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎

    [Open Search产品评测]--   来往,7天轻松定制属于自己的搜索引擎   [使用背景] 相信很多人都遇到过要给网站或者app做一个搜索功能的需求,很久之前自己折腾过lucene,搞了很久, ...

  2. 【阿里云产品评测】小站长眼中的巅峰云PK

    [阿里云产品评测]小站长眼中的巅峰云PK 阿里云论坛用户:昵称-a5lianmeng 笔者是一名小站长,因狂热互联网,而在毕业后由宅男逐渐进入站长队伍,在毕业后的几年间,经营6个流量类网站,身为站长, ...

  3. Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结

    Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结 1. Sql语言应该得到更大的范围的应用,1 1.1. 在小型系统项目中,很适合存储过程写业务逻辑2 1.2. 大型 ...

  4. odoo 基于SQL View视图的model类

    在做odoo的过程中,会涉及到多表的查询, 尤其是做报表的时候这种情况更甚,这样下来会做很多的关联,不是很方便.odoo提供了一种机制,即基于视图的model类.代码地址在这里. 具体过程如下: 1. ...

  5. 基于fork(),execvp()和wait()实现类linux下的bash——mybash

    基于fork(),execvp()和wait()实现类linux下的bash--mybash 预备知识 fork():fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可 ...

  6. 基于Windows下浏览器无法正常打开的解决方案

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  7. 基于支付系统真实场景的分布式事务解决方案效果演示: http://www.iqiyi.com/w_19rsveqlhh.html

    基于支付系统真实场景的分布式事务解决方案效果演示:http://www.iqiyi.com/w_19rsveqlhh.html

  8. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  9. Python 基于urllib.request封装http协议类

    基于urllib.request封装http协议类 by:授客QQ:1033553122 测试环境: Python版本:Python 3.3   代码实践 #!/usr/bin/env python ...

随机推荐

  1. MySQL 查看表结构简单命令。

    一.简单描述表结构,字段类型 desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键. 二.查询表中列的注释信息 select * from information_ ...

  2. I/O小总结

    //判断不存在就创建目录 ,然后拷贝文件 DirectoryInfo di = null; if (!Directory.Exists(n.Attribute("value").V ...

  3. Top 7 Myths about HTTPS

    Myth #7 – HTTPS Never Caches People often claim that HTTPS content is never cached by the browser; p ...

  4. ThinkPHP C+F方式

    ThinkPHP常用C+F方法进行配置设置于缓存设置 比如常见的 C(F('smtp'),'smtp');表示获取F方法中smtp缓存,设置配置为smtp函数 C方法是ThinkPHP用于设置.获取, ...

  5. jdbc调用存储过程的方法

    ----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...

  6. c#实现word,winWordControl 文档不允许复制、粘贴、隐藏工具栏、快捷保存

    1.隐藏工具栏 //隐藏工具栏 ; i <= winWordControl1.document.CommandBars.Count; i++) { winWordControl1.documen ...

  7. php获取GET方式传入的全部变量名称与值:foreach用法

    $count = count($_GET); $i = 0; foreach ($_GET as $key => $value) { if ($i == $count - 1) { $str . ...

  8. 解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法

    http://blog.csdn.net/zhubin215130/article/details/39347873

  9. Setting up Nutch 2.1 with MySQL to handle UTF-8

    原文地址: http://nlp.solutions.asia/?p=180 These instructions assume Ubuntu 12.04 and Java 6 or 7 instal ...

  10. Simple Worker Thread Class

    http://www.codeproject.com/Articles/36184/Simple-Worker-Thread-Class Introduction Many times we need ...