Logo
Section 1 / 8

问题描述

让我们来看一个要求你为搜索引擎设计搜索相关性系统的问题描述。

导入

问题描述

让我们来看一个要求你为搜索引擎设计搜索相关性系统的问题描述。

问题陈述

面试官要求你设计一个搜索引擎的搜索相关性系统。

澄清问题

我们通过明确以下三个方面来澄清问题:范围、规模和个性化。

问题范围

面试官的问题非常宽泛。你最好尽可能避免歧义,向面试官提出尽可能多的问题。这有助于你在思考最佳解决方案时缩小问题范围。

因此,你向面试官提出的第一个问题可能是:

这是一个像 Google 或 Bing 这样的通用搜索引擎,还是像亚马逊商品搜索这样的专用搜索引擎?

在深入寻找解决方案之前,明确问题范围至关重要。为便于本章讨论,我们假设你正在构建一个类似 Google 或 Bing 的通用搜索引擎来获取相关结果,但所讨论的技术和方法适用于所有类型的搜索引擎。

最终,问题可以精确描述为:

构建一个通用搜索引擎,能够针对“理查德·尼克松”、“编程语言”等查询返回相关结果。

为此,你需要构建一个机器学习系统,通过按相关性排序,为搜索查询提供最相关的结果。因此,你的任务聚焦于搜索排序问题。

📝 处理专用搜索引擎的方法也大致相似。

规模

当你明确要构建的是一个通用搜索引擎后,确定系统的规模同样关键。几个重要问题是:

  • 你的搜索引擎需要覆盖多少个网站?
  • 预计每秒需要处理多少请求?

我们假设你需要从数十亿份文档中进行搜索,并且搜索引擎每秒大约接收 10,000 次查询(QPS)。

理解这一规模对于设计我们的相关性系统至关重要。例如,在本章后续部分,我们将介绍基于漏斗结构的方法:在这个大规模搜索系统中,随着漏斗层级的深入,模型复杂度逐步提升,同时待处理的文档集合逐渐减少。

个性化

另一个需要考虑的重要问题是:用户是否已登录。这将决定你能在多大程度上引入个性化因素以提升结果的相关性。我们假设用户已登录,并且你可以访问其个人资料以及历史搜索记录。

实用的机器学习技术/概念

指标