云栖硬核回顾|企查查搜索引擎演进之路

本文来自于2019年云栖大会--搜索推荐工程技术专场嘉宾:企查查技术总监 朱正亮 的分享

前言
企查查作为企业征信行业的搜索引擎,一直以来都与阿里云开放搜索团队有深度合作。本次朱总独家揭秘,开放搜索陪伴企查查从创业初期到成为企业征信行业的独角兽的过程中,是如何满足企查查产品海量数据的精准搜索需求的。

  • 本文字数:2751 个
  • 阅读时间:约9分钟
  • 您将了解:
  1. 企查查搜索引擎演进之路
  2. 开放搜索在业务中的应用场景
  3. 探讨未来搜索服务的形式

以下是来自企查查_朱总的演讲分享,点击 订阅《阿里云搜索与推荐技术交流期刊》,获取本片原文干货文稿!

创业初期如何平衡搜索效率、成本和稳定性

初期,我们作为一家初创公司,产品迭代“效率”是优先考虑的问题,在我们只有100万的数据文档时,选用的是关系型数据库作为数据存储。但随着我们推出正式版,产品受市场欢迎程度大大超过了预期,随之而来的就是公司文档数、用户量、访问量的急速增长过程中逐渐暴露出的技术问题,迫使我们不停升级配置,并不断调整搜索方案。在这个阶段,我们开始逐步接触阿里云的Elasticsearch、Opensearch、ElasticFlow等。
在资金成本和时间成本的综合考虑下,我们放弃了传统数据库,并选择Opensearch作为替代产品;开放搜索的接入成本较低,在快速完成搜索方案的替换后,一切都很顺利,性能问题及交付的效率问题均成功解决。同时在后续的版本迭代中,流量翻了几十番的情况下,开放搜索(Opensearch)的弹性服务对于我们的基础搜索业务的保障也算稳定;

云栖硬核回顾|企查查搜索引擎演进之路

下图是最近几年企查查迭代的缩影,我们确保每月有大迭代,每周有小迭代的高频迭代速度,对搜索工程师来说,主要工作就是:1、映射字段;2、修改索引;3、修改Quary;4、输出Quary;那么回到之前的问题,基于开放搜索语法的易用性,调试的便利性,有效的缩减了搜索人员的时间成本。

云栖硬核回顾|企查查搜索引擎演进之路

我们推出的第一版产品叫“企业信用信息查询”,只有最基本的数据,用的是关系型数据库,而到今年6月份,每家企业的数据维度已经达到了100个,而参与搜索的数据维度有45个,如此多的数据会存在于不同的数据源里面,做搜索的同学就需要对接各种数据源,经常处于繁杂的灌数据、删数据、再重新灌的工作中,开放搜索在这一点上帮我们节约了不少运维成本。

云栖硬核回顾|企查查搜索引擎演进之路

截止到今年年初,企查查全球商业数据库涵盖了200多个国家,4亿多个企业主体,并且参与搜索的文档总数超过了20亿。数据量的大幅度提升给我们带来了新的挑战,就是全量数据灌入、千万级数据翻新的时间挑战。数据公司对于数据的及时性是有严格的要求的,滞后的数据约等于无效的数据,数据价值会显著降低。我们的本地数据搜索是基于开源的搜索引擎完成的,关于数据更新,一直未能完美解决性能和效率的问题。生产线的搜索基于开放搜索,千万级的数据翻新则完全无此问题,无需在性能和效率之间做妥协。

云栖硬核回顾|企查查搜索引擎演进之路

与大部分数据公司一样,我们的产品迭代快、维度多、数据多。在第一版产品上线一周后,实现了100万的文档数、1万用户以及100 KPS峰值,而到了今年年初,我们的文档数突破了20亿,超过2亿用户,以及平均QPS(主搜)超过了3000。而从最初100万的文档数,到今年初的20亿的文档数,开放搜索在稳定性上给了我们很大的支持,同时也帮我们减少了较多的人员、时间成本。

云栖硬核回顾|企查查搜索引擎演进之路

如何满足高阶搜索需求

起初我们开始对搜索的期望,是用户输入什么我们给他什么,返回用户想要的东西就可以。后来出现了问题,比如一位用户反馈在我们的平台无法查询到他们的公司。我们查看了用户的输入日志,发现用户输入的是“新奥混疑土”,但需要检索的公司叫“新奥混凝土”,为了解决这个问题,我们接入阿里云的同义词/形近字/同音词的功能,后面对“新奥混凝土”、“经济公司”、“经纪公司”等都做了一些兼容;

后面是分词的问题。初期我们理解的分词也较为简单,做为一家做企业征信的数据公司,不需要做泛泛的分词,因为企业名称存在一定的特殊性,比如“杭州阿里巴巴科技有限公司”、“苏州朗动网络科技有限公司”,前面都是省市区,后面是“科技”、“网络”公司,斩头去尾后,将剩下的字根据其凝固度和*度,做了自己的分词字典,后面我们对比了阿里云提供给我们的分词产品,效果差距比较大,最终还是决定选择了阿里云的分词。

此后还有主体和认知的问题。当我们听到“北大”的时候,会想到“北京大学”,听到“阿里”的时候,会想到“阿里巴巴”,而用户输入的时候,同样会带有主体认知,但搜索引擎并没有一致的认知。搜索引擎不知道“苏大”是苏州大学,它返回你的或许是“苏大强”。那么我们就需要将常识中的认知,持续的同步给搜索引擎,让它在处理用户的搜索入参时,能理解一些俗语。而这一块工作,并不需要我们的搜索团队做太多干预,开放搜索也具备了通用的主体信息,我们只需做适当补充即可。

云栖硬核回顾|企查查搜索引擎演进之路

当然,即使再完美的应对机制,也无法保障所有的搜索都能满足用户的搜索预期。在一定的时候我们也会存在一些干预。下图中的一些输入,我们对用户的输入进行了纠错,同时保留选择的权利。这期间搜索团队在后端接入了较多服务,一部分是我们自己做的,另一部分是直接接入了阿里云的服务,比如他的新词发现、人气模型、主体识别、实时提权等。

云栖硬核回顾|企查查搜索引擎演进之路

企查查搜索的后续方向

前面分享了较多企查查搜索的现状,我们再聊聊企查查搜索的后续方向。套用个年度热门句式,“搜索不再是搜索”。怎么理解?打个比方,当我们输入小米的时候,关注互联网的用户,我们期望返回给他的是“小米科技”、如果关心粮食蔬菜的,我们期望返回给他的是“小米农业发展公司”,关注金融的,我们就给他“小米金融”,简单来说就是实现千人千面,这需要持续的上下文分析的,以及用户画像的沉淀。

云栖硬核回顾|企查查搜索引擎演进之路

另一方面,我们发现用户不仅是对关键词的输入,也会有口语化的输入,比如用户会问“小米的招股书在哪里”“华为的股东有哪些”“京东的年报有没有发”面对这类情况,我们又该如何处理?这就又涉及到NLP团队,涉及到知识图谱的建设。此时的搜索,不再仅仅是搜索团队的事,会涉及到多团队,多数据的整合。

“搜索依然是搜索”:无论搜索怎么扩充信息,最终我们评估搜索的标准依然是回归到搜索的本身,即是否返回用户最想要的信息。怎么度量这个,如何评估搜索的好坏?如何确认搜索人员做到的精准,是否就是用户想要的?企查查对于搜索的评估主要基于如下4个指标Top3SuggestNullHitRate。我们持续关注上述这个指标的变化,并持续予以优化。

1. TOP3

我们的结果集常态的输入可能有数十条数百条,精准的搜索可能只有1条记录,最大的则能达到1万条。对于不同量级的结果集,我们关注前三条用户的点击比例,并把这个指标作为衡量整个搜索是否精度的最主要指标。

2. Suggest

用户每多输入一个字数,结果集都是在变化,他什么时候点击相当重要,如果持续不点击suggest意味着用户需要输入更多的字数,这时会判断推荐词是否是他想要的,如果该指标比例提高会有效减少用户的输入时间。这也是评估搜索是否精准的一个重要指标。

3. Null

无结果是搜索比较糟糕的体验,为了规避无结果的占比,我们除了分析用户的输入以推动纠错,兼容形近、音近等情况,还补全了诸如二次搜索等机制。

4. HitRate

整体的点击搜索比,宏观面的数据,既可以辅助分析用户的搜索行为,也可以反推当前的数据质量走势。

通过对上述指标的持续跟进,我们可以较为直观的知道整个搜索团队的工作是否在往更好的方向发展,同时也能分析到给用户的搜索习惯走势。

云栖硬核回顾|企查查搜索引擎演进之路

当然,关于搜索,我们除了上述各种预设的机制外,对于热门的搜索,我们也特别增加了人工干预,以规避新词更新不及时,热点事件排序不合理问题。

加入社区

点击 订阅《阿里云搜索与推荐技术交流期刊》,获取本片原文干货文稿!


如果你想与更多开发者交流随时交流、了解最前沿的搜索与推荐技术,可以扫码加入社群

云栖硬核回顾|企查查搜索引擎演进之路

相关产品

开放搜索(Opensearch)

阿里巴巴自主研发的大规模分布式搜索引擎平台,其核心引擎HA3(问天3)系统为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过集成智能查询语义理解、机器学习排序算法等能力,旨在为企业提供高搜索质量的一站式内容智能搜索服务。

智能推荐(AIRec)

基于阿里巴巴领先的大数据和人工智能技术,结合在电商、内容、新闻、视频直播和社交等多个行业领域的积累,为全球企业及开发者提供个性化推荐服务

上一篇:云栖全程回顾|搜索推荐工程技术专场(附视频与文档)


下一篇:【最佳实践】如何运用DataWorks数据同步功能,将Hadoop数据同步到阿里云Elasticsearch上