【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类

 【Open Search产品评测】--php

 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案html

 

[使用背景]api

       咱们淘点点团队应该能够算是内网首批使用opensearch来搭建应用的团队了,在此以前,一直使用集团内一个基于lucene的引擎平台。对于淘点点特定的排序需求,都须要该团队配合升级,运维上共同维护。年初,集团推出Isearch5,而后又看到opensearch,一个基于Isearch5之上的搜索开放平台。听下来最令咱们开心的就是:排序支持formula, 这样之后咱们就能够本身写排序表达式,同时也能够动态调整排序参数,排序简简单单的一句“sort=RANK”就能让定制排序生效,就是方便。运维

[使用过程]优化

       事实上,opensearch上手的确很快。看一下官网的帮助文档,建立出应用,定义好索引结构,调用其提供的sdk就能快速搭建搜索服务。固然,期间也会有不少细节问题和需求,这些经过opensearch团队的兄弟姐妹,都能快速解决。同时opensearch提供多种排序和过滤策略,彻底自定义,能让咱们在产品上进行多个维度上展示,底层只须要稍微修改下查询语句便可,很是方便。spa


[使用技巧]插件

       如外卖场景,须要根据商家的配送范围进行外卖能力的筛选和判断,opensearch团队也推出了in_polygon插件,只须要商家将配送范围在地图上进行打标,转化为opensearch的多值double字段area_values,查询时调用in_polygon(lat,lon,area_values),其中lat\lon为当前用户坐标,便可实现界面上只展示能配送到用户指定位置的商家列表。orm

       按距离排序或者过滤应该是O2O类搜索不可避免的需求,对此opensearch也提供了distinct的功能,可以用到filter、sort以及排序表达式中,对距离项进行过滤、排序或者算分加权。htm

       还有一个疑难点,按照菜品、优惠券聚合功能,好比在店的维度有多个菜品、多张优惠券,展现时须要根据若干的条件优化到最优的一条,但又要展现出总条目,经过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 

相关文章
相关标签/搜索