做一个好的搜索引擎有多难

文|见鹿@知乎
本文已获作者授权,禁止二次转载

前言

搜索引擎是个极其复杂的系统工程,搜索引擎上并不会大力出奇迹,需要一点点打磨。在搜索引擎上,q-u相关性计算是基础,但仍需要考虑其他很多因素,其中非常重要的两点就是权威性和时效性。

不同的query下,一直都会有新的资源产生,但不是说所有query下都需要将新资源排序、展示出来。有一类query,在这些query下用户期待看到最新的新闻事件搜索结果。搜索引擎需要将这部分突发需求识别出来,并且将其相关的新资源尽可能排上来。

例如:在科比去世(2020-01-27 R.I.P)的背景下,此时当用户在搜索引擎上搜索"科比"时展示的结果,可能跟几分钟前的展示结果差异很大。

或是“武汉爆发新型肺炎”这类query,可能平时没出现过,属于低频冷门词,但用户想看的就是最近的结果。

诸如此类的需求变化识别,搜索引擎在自动化识别的过程中,遇到哪些challenge?

注:有一部分query需求也是一直要求"实时新",如天气,汇率等需求,这部分query形态比较稳定,并且对这部分query而言“唯一不变的就是变化”,这部分需求识别先不放在本次讨论中,我们讨论的是这种明确有事件性质的识别,可能结果形态和平时不同的case。

难点与挑战

基础指标要求非常高,速度和准召天然的矛盾

召回问题:这类query的占比低,因为如果没有识别召回,则基本上通篇检索结果,都不会满足。假如:科比去世背景下,“科比”如果没有被识别出来,则通篇不会有其飞机失事的新闻结果。

准确率问题: 由于其有特殊的地位权重,就要求对识别的准确要求也很高。

识别速度: 准召高就好了么?并非如此,因为新闻事件通常生命周期很短,若是事情已经过去1天了才识别出来,热度的高点都过去了。识别速度也非常关键。通常我们是要做到分钟级识别。

激发多,跳跃性强

一个新闻事件的发生,会激发出好多周边需求,而这些需求分布很泛很散。

从很多统计信号上,根本不好区分。白百何出轨事件下,“失恋三十三天”频次pv增加50w...

依赖的下游很多,对效果的影响

快速识别出来不是目的,将真正的优质新结果展现到合理的位置才是。

需要上游分钟级别的抓取、建库、流式数据建设,又需要下游的召回、排序、pk机制效果保障。

cache的问题,缓存与新结果识别展现的天然矛盾

每天数十亿的pv请求,每次pv又要去数千亿的网页库中查找召回,再做上层排序,每次开销是很大的,势必需要上层对于中高频的query做cache缓存。

而cache缓存和新结果的识别又是天然矛盾。缓存存在的意义就是不下发查找,而识别依赖查找,总要有一定的机制去指导去做主动更新。

短生命周期,标注难、评估难

通常一个事件,发生事件只在几天只能,对齐评估标注,需要考虑当时的情景。而且特别是事件刚刚爆发下,需要在分钟级内对其进行现场录制比较。

这个评估非常非常的耗费人力物力,超乎一般的想象。

复现历史问题现场难

对于刚刚发生的事件而言是分钟级别影响,可能5min之后就是完全另一个效果展示了。因为突发识别的有无、强弱影响很大。“九寨沟地震”背景下,可能就在短短几分钟之内搜索“九寨沟”的展示就差别很大。

若是有问题,需要及时抓取记录,否则无法事后进行分析。

回归历史问题难

资源、频次等都是瞬息万变的,所以即便做了模型、策略优化。

也很难回归之前的历史问题case,需要将很多很多的信号全都dump下来,才有可能去回归效果。这需要架构方面的大力支持。

最近进展问题

有的事件虽然有识别,搜索引擎也知道它是新闻事件,但若它有最新的进展,则本质上在这个时间点后面的检索需求又发生了改变。如何识别出这个时间点,已经将这个时间点后面的资源做优质的boost,仍是一个比较大的挑战。

例如:“欧冠决赛”,假如比赛刚刚结束了,新的结果已经产出,此时的搜索就需要将最新的比方结果给出,而不是上半场的播报,或是半天前的赛前分析了。“无锡高架桥死伤”,若官方出了最新通报,这之前的死伤结果就不是所需要的了。

这部分case真实占比还不算低。

作弊问题,流量问题

在抓取建库时需要做页面分析,需要对流量作弊做分钟级别的控制。但处于实际效率,对于高时效部分的pv在反作弊上的工作有所折衷。anti-spam的一些漏网之鱼会给整体识别带来不小的麻烦。

尤其是一些商品,加盟等有高危影响的方面。

长冷泛化问题

同一个事件,在这么大量级的用户群体中,会出现成百上千个不同的描述。

如何找到同一事件后相同query间的关系,并利用这个关系,是一个很大的挑战。

新闻站点下大量非新闻

大的新闻站点,也并不是那么可信。包括熟知的一些非常大的新闻站点。

这超乎了很多的想象。

不信你可以统计你资讯app上推送的内容,以及新闻站点/app上随机看,看看到底有多少是真正的新闻的比例。或许你就懂了。

地方性、垂直领域性

一些地方性、领域性的事件,甚至对于你而言非常小,但对他而言,有确实是一个新闻事件按需求,我们每个人都会有这样的需求。

例如某个县的副县长xxx被开除党籍、xxx小区着火,甚至“西二旗路面大坑”,这种很小的、频次很低需求(不过上面这些case,我们还确实解决了:)

库种差异

我相信所有的搜索引擎公司的网页库,都是漏斗形结构。

这样的话,同一个query在不同库种下搜索的结果存在天然的分布不合理。特别中高频短query。如何解决这个问题,同时又要兼顾真有突发事件的需求不被误干掉,挑战同样存在。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为

原文地址:http://android.xsoftlab.net/training/sharing/shareaction.html 从Android4.0开始,使用ActionProvider可以更方便的在ActionBar上实现一个有效的、用户友好的分享按钮。一个ActionProvider一旦依附到了ActionBar的菜单条目上,它会…

开源开放 | OpenKG组织发布第二批并更新近十个新冠知识图谱开放数据集

2020年2月11日,世界卫生组织宣布了新型冠状病毒肺炎官方正式命名为 COVID-19,21日国家卫健委决定与世界卫生组织保持一致,中文名称不变。随着关于新型冠状病毒病毒疫情的不断发展,有关疫情的各类信息也在不断更新。OpenKG 紧随疫情…

事件抽取中的“门面技术”:事件名称生成浅谈

6月10日,“网信中国”微信公众号发布消息称:微博热搜榜、热门话题榜暂停更新一周,这使得很多热榜平台都受到波及,而在吃瓜之余,我们更进一步地思考热点榜单以及热点名称生成背后的技术,并发出两连问&#x…

保障IDC安全:分布式HIDS集群架构设计

背景 近年来,互联网上安全事件频发,企业信息安全越来越受到重视,而IDC服务器安全又是纵深防御体系中的重要一环。保障IDC安全,常用的是基于主机型入侵检测系统Host-based Intrusion Detection System,即HIDS。在HIDS面…

LeetCode 1154. 一年中的第几天

1. 题目 给你一个按 YYYY-MM-DD 格式表示日期的字符串 date,请你计算并返回该日期是当年的第几天。 通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法&#xff…

数据有偏差,照样能学对!20年前就有这么强的算法了?

文 | 白鹡鸰给小铁比了个心编 | 小轶背景“每个人都依赖自己的知识和认知,同时又为之束缚,还将此称为现实;但知识和认识是非常暧昧的东西,现实也许不过是镜花水月——人们都是活在偏见之中的,你不这样认为吗&#xff1…

论文浅尝 | 基于图卷积网络的跨语言图谱实体对齐

论文笔记整理:谭亦鸣,东南大学博士生,研究兴趣:知识图谱问答本文提出了一种基于图卷积网络的跨语言实体对齐方法,通过设计一种属性 embedding 用于 GCN 的训练,发现GCN能同时学习到特征 embedding 和属性 e…

大众点评搜索基于知识图谱的深度学习排序实践

1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜索)…

论文浅尝 \ 联合知识图谱实例和本体概念的通用表示学习

论文笔记整理:周虹廷,浙江大学研究生。研究方向:知识图谱,图表示学习等。论文链接:http://web.cs.ucla.edu/~yzsun/papers/2019_KDD_JOIE.pdf本文是发表在KDD 2019上的关于知识图谱表示学习的论文。现有知识图谱表示模…

手握顶会顶刊论文,自信满满面试算法岗竟被刷?

2020国内深度学习框架领域百花齐放。各大公司也都陆续推出了自己的框架,大大推动了深度学习的发展。深度学习俨然已经渗入到我们生活中的每个角落,给生活带来极大便利。深度学习能够针对生产生活所面临的复杂问题,给出高准确率、操作简易、成…

LeetCode 110. 平衡二叉树(二叉树高度)

1. 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。…

人物志 | 美团技术委员会前端通道主席洪磊:爱折腾的斜杠青年

洪磊,2013年加入美团,目前是美团外卖事业部终端组的负责人,也是美团技术委员会前端通道主席。在加入美团之前,洪磊的职业生涯可以用“跌宕起伏”来形容。他就读于中南财经政法大学,曾任职于雅虎中国,先后担…

论文浅尝 | 可建模语义分层的知识图谱补全方法

本文转载自公众号:PaperWeekly。论文作者:蔡健宇,中国科学技术大学,研究方向:知识图谱近些年,知识图谱(Knowledge Graph)在自然语言处理、问答系统、推荐系统等诸多领域取得了广泛且…

美团背后的商业模式是什么?后疫情时代该走向何方?

文 | King James知乎本文已获作者授权,禁止二次转载2020年的疫情,让10年前的一部剧再次进入人们的视线中,那就是《我的团长我的团》传统社区团购和各大互联网巨头都广发英雄帖招聘社区团购的团长,感觉回到了10年前那场“百团大战”…

LeetCode 783. 二叉搜索树结点最小距离(中序遍历)

1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。 示例:输入: root [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点对象(TreeNode object),而不是数组。给定的树 [4,2,6,1,3,null,null] 可表示为下图…

Kubernetes 1.20 版本开始将弃用 Docker,是时候拥抱 Containerd 和 Podman 了!

Kubelet 中对 Docker 支持被弃用,并将在以后的版本中删除。Kubelet 使用一个名为 dockershim 的模块,该模块实现了对Docker的 CRI 支持,在此PR后续版本将删除dockershim。 Kubectl 弃用 --delete-local-data 参数。 名词解释 上面中提到两个名…

开源开放 | OpenKG 更新发布新冠概念、防控和流行病等多个知识图谱

近日,OpenKG 继续更新发布多个新冠知识图谱,其中包括哈尔滨工业大学构建的新冠概念图谱,武汉科技大学与东南大学联合构建的新冠防控图谱。同时,更新了由 IBM 中国研究院构建的流行病学图谱 V1.1。OpenKG 发布的所有新冠知识图谱都…

客户端单周发版下的多分支自动化管理与实践

背景 目前,互联网产品呈现出高频优化迭代的趋势,需求方希望尽早地看到结果,并给予及时反馈,所以技术团队需要用“小步快跑”的姿势来做产品,尽早地交付新版本。基于以上背景,美团客户端研发平台适时地推行了…

无意中发现了一位清华大佬的代码模版

对于刷题相关的文章,在之前我也推荐过不少,今天在给大家推荐一份算法刷题笔记,这份笔记与以往的刷题有所区别,作者把 Leetcode 一千多道题都进行了系统的整理,并且对于每一道题的代码,都要求 beat 100%。作…

LeetCode 998. 最大二叉树 II

1. 题目 向最大二叉树插入一个值; 如果该值大于根节点,则子树必须在该值的左边; 如果该值小于根节点,则该值必须在根节点的右子树 2. 解题 class Solution { public:TreeNode* insertIntoMaxTree(TreeNode* root, int val) {if(…