刘尚坤,京东推荐搜索部技术总监,在推荐、搜索、广告等方面拥有丰富的团队管理和产品研发经验。一、京东商品搜索简介京东商品搜索引擎是搜索推荐部自主研发的商品搜索引擎。其主要功能是为广大京东用户提供精准、快捷的购物体验。虽然只有短短几年时间,但我们的搜索引擎已经多次通过618店庆、双11的考验,与人们日常使用的谷歌、百度等全文搜索引擎相提并论。相同点,比如覆盖亿级商品的海量数据,支持短期超高并发查询,各自的业务特点:海量数据,亿级商品体量;高并发查询,日PV过亿;请求需要快速响应。搜索已经成为我们日常生活中不可或缺的应用。很难想象如果没有谷歌、百度等搜索引擎,互联网会是什么样子。京东商品搜索之于京东,就像搜索引擎之于互联网。他们的共同点:海量数据,亿级商品体量;高并发查询,日PV过亿;需要快速响应请求。这些共性使得产品搜索采用了与大搜索相似的技术架构,将系统划分为:离线信息处理系统;指标体系;搜索服务系统;反馈和分类系统。同时,商品搜索具有商业属性,与大搜有一些区别:商品数据已经结构化,但分散在商品、库存、价格、促销、入库等多个系统中;召回率高,保证每次正常搜索都能搜索到所有产品;为保证用户体验,产品信息变化(如价格、库存变化)实时性要求高,导致更新量大,每天更新数千万条;强烈的个性化需求,由于是一个比较垂直的搜索领域,需要满足用户的个性化搜索意图。比如用户搜索“小说”,有的用户想找言情小说,有的用户想找武侠小说,有的用户想找励志小说。此外,不同的人有不同的消费能力、性别、对交货时间的容忍度、对促销的偏好以及对“款式”和“材质”等属性的偏好。以上这些都需要一个比较完善的用户画像系统来提供支持。#p#2.整体架构图搜索服务集群:由许多合并节点组成的集群。收到query查询后,通过qp触发器将请求策略性发送到在线搜索服务集群和其他服务集群,并对各个服务的返回结果进行合并排序,然后调用detailserver对结果进行打包,以及最后还给了用户。查询处理器服务器:搜索查询意图识别服务。在线检索服务集群:由多个searcher节点组成,每个searcher列对应一个小的分片索引(包括全量数据和实时增量数据)。详情服务器:搜索结果显示服务。索引生产端:包括全量和增量数据生产,为在线检索服务集群提供全量、实时的索引数据。3、离线信息处理系统由于商品数据分布在不同的异构数据库中,存在KV相关的关系型数据库,需要将这些数据抽取到京东搜索数据平台,分为全量抽取和实时抽取。对于全量索引,由于产品数据分散在多个系统的数据库表中,为了便于索引处理,将多个系统的数据在产品维度进行合并,生成一个产品宽表。然后在数据平台上,使用MapReduce对产品数据进行清洗,然后进行离线业务逻辑处理,最终生成全量数据进行索引。对于实时索引,为了保证数据的实时性,通过实时调用商品信息接口获取实时数据,合并数据后,将数据进行处理类似于全量索引的方法生成增量数据进行索引。4.索引系统该系统是搜索技术的核心。在进入本系统之前,搜索信息仍然存储在商品维度中。索引系统负责生成存储在关键词维度中的信息,一般称为倒排索引。本系统对全量和增量的处理是一致的,唯一的区别是处理的数据量不同。一般情况下,由于数据量巨大,采用Hadoop进行全量数据索引;对于实时数据量小,采用单机索引生产。五、搜索服务系统搜索服务系统是实际接受和响应用户请求的系统。本系统最初只有1个检索器,形成在线检索服务。由于用户体验的需要,首先添加QueryProcessor服务,负责查询意图分析,提高搜索准确率。随着访问量的增加,增加缓存模块,提高请求处理性能。然后,随着数据量(商品量)的增加,打包服务从检索服务中分离出来,成为一个detailServer服务。随着数据量的进一步增长,数据的分片类似于分库分表。此时,在线检索服务由多个分片搜索器列组成。自然需要合并服务来合并多个分片的结果。至此,搜索基础服务体系搭建完成。之后无论是搜索量的增长,还是数据量的增长,都可以通过扩容来满足。对于618、1111等搜索量的增加,可以通过增加每个搜索器列的服务器数量来满足。对于商品数据的不断增加,只需要将数据做更多的分片,相应增加searcher栏目即可满足要求。搜索服务系统内部处理流程如下:在这个流程中,缓存模块和拉取结果模块非常稳定。排序模块和在线业务逻辑处理模块经常需要修改。架构需要稳定、高效和通用。分拣业务的特点是实验模型多、开发迭代快、注重结果。为了解决这种冲突,需要将排序业务从架构中分离出来,以动态链接库的形式整合到整体搜索架构中,具体包括文本策略和其他策略两个维度的关联,搜索器中集成文本策略关联;其他政策依赖(包括反馈、个性化和业务调整等)在合并中被整合。实现结构和排序业务各司其职,互不干扰。排序与架构分离#p#六、反馈与排序系统反馈系统主要包括对用户行为数据的实时采集与处理,并将数据存储在数据集市中,并提取这些数据的特征,进行排序最重要的评估线以上指标是UV值和转化率,所以这些数据也会被用来根据优化目标构建标签数据。然后,基于机器学习的排名系统会为这些特征建立模型。京东排序模型是每天更新的训练前半年左右的数据。基于京东搜索的基于模型的排序,上层也会有一个规则引擎,比如保证店铺和品牌的多样性,京东的策略支持的品牌等等,都是通过业务引擎来实现的.一般基于机器学习的排序模型需要长期投入,但模型更稳健,不易被作弊手段发现漏洞,可以使转化率和UV价格可持续提升。规则引擎的主要目的是快速响应市场变化,达到立竿见影的效果。二者一似中医,一似西医。中西医结合有很好的疗效。七、今年双十一搜索系统性能优化1、故障秒级切换今年搜索集群部署在三个机房。任意机房遇到断网、断电等问题,可秒级切换至其他机房。并且部分搜索应用部署在弹性云上,可以动态扩展。2、活动期间,指数数据实时更新。由于每年大促期间产品内容等信息变化频繁,涉及数千万次索引写入操作,今年对索引结构进行了调整,所有索引更新中存在的锁机制全部取消。添加和修改操作成为链式更新。促销期间产品的指数更新达到了精彩的程度。3、大促期间个性化搜索不降级。往年大促期间,客流量是平时的5倍多,高峰期是平时的7倍。为了保证系统的稳定性,对个性化搜索进行了降级。今年针对搜索缓存进行了针对性优化,实现了三级缓存结构。从下到上分别是词条缓存、相关计算缓存和翻页缓存。顶层的翻页缓存往往会被用户的个性化请求打断,但是底层的correlationcache和termcache的结果可以发挥作用,这样CPU负载就不会太高。八、京东在电商搜索方面的产品和技术创新1、个性化搜索对于同一个查询,不同的用户在之前的搜索中会看到完全相同的结果。这可能无法满足所有用户的需求。这个问题在产品搜索中尤为突出。由于搜索产品的用户可能特别喜欢某些品牌、价格、店铺的产品,为了降低用户的筛选成本,需要根据用户个性化展示搜索结果。个性化第一步是将用户和产品分别建模,第二步是为模型服务。经过这两个步骤,当用户进行查询时,合并器会同时调用用户模型服务和在线搜索服务。用户模型服务返回用户维度特征,在线搜索服务返回商品信息。排序模块使用这两部分数据对结果进行重组。排序,最后将个性化的结果返回给用户。2、综合搜索用户使用搜索时,其目的不仅仅是为了寻找商品,还包括查询服务、活动等信息。为了满足这类需求,首先在QueryProcessor中加入对应intent的识别。第二步是对服务、活动等一系列垂直搜索进行整合和服务。一旦QP识别出这样的查询意图,它就会使用集成服务将相应的结果返回给用户。3.情感搜索情感搜索是为了尽可能多地满足搜索意图,这就需要在后台建立一个强大的知识库系统。例如,从海丽评论中挖掘出有意义的标签“成像效果好的相机”、“聚拢效果好的文胸”、“适合婆婆使用”等,将这些信息一起构建到索引中。例如搜索“适合同性恋朋友”的“礼物”结合搜索意图分析结果就可以搜索出来。此外,还可以从外部网站抓取有价值的信息,辅助构建知识库系统。4.图像检索很多时候用户不知道如何描述一个产品。通过搜索意图分析和情感分析,尽可能挖掘搜索意图。在很多情况下,用户根本无法描述。例如,当他们在超市看到一种进口食品或一件时装时,他们可以迅速在网上找到并通过拍照比价。即使同事穿着一件自己喜欢的衣服,他也可以通过拍照找到。京东目前正在着手这方面的开发。离线方面,CNN算法主要用于提取图片的主题,提取相似特征,提取相同特征。引擎端主要是类似搜索引擎的技术。图片搜索将在未来打开一个新的电子商务购物入口。京东目前正在开发一个新的图片搜索引擎。
