如何帮助找到一个组织而不花一个星期的时间



当人们在Yandex搜索中输入汽车维修店,诊所或商店的名称时,他们想查找有关它们的信息。例如,工作时间表或电话号码。一个人是否会迅速解决其问题还是浪费时间和神经,取决于这些数据的准确性和相关性。

我的名字叫亚历山大(Alexander),我代表Geopoisk小组和Yandex.Directory,他们的数据每月被超过4,600万人使用。今天,我将简要讨论如何将Yandex搜索中的数据更新时间从几天减少到几小时,有时甚至是几分钟。您还将发现里卡多·米洛斯(Ricardo Milos)是谁,以及他给我们带来了什么问题。



目录是组织的数据库。任何公司或个人都可以在此处添加信息:指出地址,营业时间,电话以及其他所有信息-Yandex会将其传达给用户。 “目录”数据用于“搜索”,“爱丽丝”,“地图”,“出租车”,“导航器”,甚至用于我们的呼叫者ID(我们已经在Habré上讨论过)

一切都会好起来的,但是数据已经过时了:组织正在关闭,移动,更改数字等等。我们自己可以跟踪更改并进行编辑,但是今天我们将讨论用户或公司发送给我们的那些编辑。为此,我们有表格和其他反馈机制。因此,我们每天可以获得数千次修改。但是我们不能只接受并发布它们。

由于粗心大意或恶意,在更正中发现了错误。后者特别多。有些人扭曲了竞争对手的数据并“关闭”了组织。其他常见的故意破坏者在公司名称和说明中增加了其他含义。



因此,如果您按原样发布编辑,则用户将受苦。因此,我们检查了所有内容。呼叫中心操作员会致电组织并澄清更改。Docker与公司联系并实时验证数据。但是这种方法不够快,并且编辑流很大。因此,我们还想出了一个机器人。

我们使用编辑的自动分类器-自动主持人。这是基于我们的CatBoost技术的机器。她接受过好坏例子的培训。幸运的是,我们有大量此类数据。

当编辑到达时,“自动主持人”会考虑几十个因素(例如,先前用户编辑的历史记录),并决定是批准,拒绝编辑还是将其发送给其他人以进行重新检查。汽车主持人可以检查Directory数据库并确保他们没有尝试创建副本,或者查看组织的网站以查找新信息,甚至打电话给组织,将自己介绍为Snezhana并阐明更改。

一个例子。在2018年,一波“重新命名”的学校,古迹和其他组织开始在制图服务和参考书中使用:在地图上,它们以里卡多·米洛斯的名字命名(关于TJ 的文章关于这个快闪族)。因此,我们违背了我们的意愿,当时遇到了一个关于巴西脱衣舞娘的流行模因(不是我们想要的,而是谁问了我们)。正是自动主持人和其他验证机制的结合才帮助我们捍卫了真实姓名。

因此,自动分类器减少了更新数据所需的时间。但是我们并没有就此停止。即使考虑到自动主持人的帮助,所做的编辑也可能需要几天才能到达服务用户。这是很长时间了。为了减少此时间,有必要解决两个技术问题。

以前,“自动主持人”看起来像一个批处理过程,它按计划运行,并且需要大量资源用于本地计算(使用用于处理数千万条记录的表)。我们已经改变了。

现在,该服务可以实时接收有关其发送者的编辑和信息。然后,汽车主持人将计算这些因素并做出裁决。在对申请作出裁决之前,我们可以等待几个小时。现在,几分钟。

但这并不意味着更改将在几分钟内到达用户。在这里,第二项任务等待着我们。

更改属于Directory目录,但是需要花一些时间才能“萌芽”到服务中。例如,搜索必须更新搜索索引以反映目录中的更改。为了解决这个问题,我们制定了一个大纲来存储对象的状态。简而言之,现在您可以替换搜索对象答案中的电话号码,而无需重建搜索索引。现在,在建立搜索结果时,搜索可以知道哪些对象已过时,并且可以获取更多最新信息。当然,在某些情况下,数据的更改会影响组织的排名,但是没有重建索引的方法。



因此,在进行了改进和实施之后,我们能够将更新有关Yandex服务中的组织数据的平均时间从几天减少到几小时,有时甚至是几分钟。我想相信你注意到了这一点。

今天,我在简短的评论文章中介绍了相当长的工作历史。告诉我们您将来想更详细阅读哪些方面或决定。我们将很高兴收到反馈和呼吁,我们将继续处理该目录,并向Habr读者告知其新闻。

All Articles