目录
- [1. 搜索引擎 笔记](#1. 搜索引擎 笔记)
-
- [1.1. Google 为什么成功](#1.1. Google 为什么成功)
- [1.2. 做搜索引擎, 既复杂, 又简单](#1.2. 做搜索引擎, 既复杂, 又简单)
1. 搜索引擎 笔记
1.1. Google 为什么成功
科技行业一直有个原则, 即人们不会愿意改变自己的使用习惯。Ramaswamy 在采访中坦言, "我们面临的最大障碍之一, 确实就是扭转用户的固有习惯。人们忘记了谷歌的成功不仅仅是开发出了更好的产品。为了实现目标, 我们必须做出一系列精准的分发决策。"
据报道, 谷歌每年向苹果支付高达 150 亿美元, 为的就是能在各类苹果设备的 Safari 浏览器中成为默认搜索引擎。谷歌同时也向 Mozilla 支付费用, 借此成为 Firefox 浏览器中的首选搜索引擎。而这笔费用高达每年 4.5 亿美元。谷歌还跟其他设备制造商和浏览器开发商有合作, 甚至跟电信运营商也有类似的交易。据《华尔街日报》报道, 三星曾在 2023 年短暂考虑结束与谷歌的交易, 但由于各种原因而最终放弃, 其中包括"可能对与谷歌间的广泛业务关系产生影响"。
谷歌的真正优势在于旗下的其它产品。Android 是目前全球最受欢迎的移动操作系统, 市场份额约占 78%。Chrome 则是最受欢迎的网络浏览器, 市场占比约 62%。在这两大平台上, 谷歌自然也成为不可撼动的默认搜索引擎。
1.2. 做搜索引擎, 既复杂, 又简单
搜索引擎是种神奇的事物------既复杂无比, 又简单纯粹。
实际上, 搜索引擎所做的就是编译网页数据库(即「搜索索引」), 之后在每次收到查询时浏览该数据库, 从中提取并交付质量最高、相关度最强的一组页面。但这过程中的每一步, 都涉及着巨大的复杂性, 需要做出一连串权衡。而权衡的核心有二: 时间与金钱。
即使创业者能建立一套不断更新的数据库, 囊括互联网上的数千亿个页面, 但光是它产生的存储和带宽成本就足以让地球上任何一家巨头企业破产。这还不包括每天对数据库执行无数次检索的成本。另外, 搜索响应中的每一毫秒都非常重要------谷歌会在结果上方显示每次查询耗费的时间。总而言之, 创业者恐怕没有足够的时间逐个查看整个数据库。
此外, 搜索引擎的构建还要从一个基本哲学问题开始: 什么叫高质量网页? 创业者必须决定哪些分歧是合理的, 而哪些信息属于纯粹的胡说八道, 必须搞清广告占比到多少才不会过度。那些由 AI 编写且充斥着 SEO 垃圾的网站当然不好, 但个人认真撰写、且同样充斥 SEO 垃圾的美食博客则还不错。
一旦完成了上述讨论并设定出明确的边界, 那搜索引擎中就基本确定了需要保留的几千个域名。其中包括 CNN 和 Breitbart 等新闻网站, Reddit、Stack Overflow 和 Twitter 的热门讨论板, 维基百科和 Craigslist 等工具服务, YouTube 和 Amazon 等服务平台, 还有各类最顶级的食谱/体育/购物网络。有时候, 创业者可以跟这些网站洽谈合作, 以结构化方式直接获取数据, 不再单独浏览各个页面。值得一提的是很多大平台都有专门的团队, 有时甚至愿意免费配合。
之后就该放出爬虫了。这些机器人能爬取给定网页上的内容, 之后查找并跟踪页面上的各个链接、索引全部页面内容, 就这样完成链接、索引的查找与跟踪循环。而每次爬虫访问一个页面时, 都会根据之前设定的高质量网页标准对其做评估。被认定为高质量的内容将被下载至某台服务器上, 于是搜索索引开始迅速膨胀。
当然, 爬虫也不是在哪里都受欢迎。爬虫每次打开网页, 都会给内容提供商带来带宽成本。现在想象一下, 一套搜索引擎每秒都会对网站上的各个页面进行加载和保存, 这样的更新成本将很快超出提供商的承受能力。
因此, 大多数网站都设置一个名为 robots.txt 的文件, 用于定义哪些爬虫可以访问其内容、哪些爬虫不行, 以及允许爬虫爬取哪些 URL。从技术上讲, 搜索引擎完全可以不理会 robots.txt 上的规则, 但这是 Web 结构和文化中的一部分。几乎所有网站都愿意接纳谷歌和 Bing, 因为它们带来的可发现性已经超过了带宽成本。也有很多人会阻止特定的服务商, 例如不希望亚马逊爬取并分析他们的购物网站。其他人则制定一揽子规则: 除了谷歌和 Bing 外, 其余爬虫概不接待。
很快, 爬虫就会带回相当广泛的互联网快照。接下来的工作就是针对搜索引擎可能收到的每条查询, 按顺序对全部页面做排名。大家可以按主题对页面做排序, 这样就能划分成更小、更易于搜索的索引, 而不是包罗万象的庞然大物。简单来讲, 就是本地结果与本地结果匹配, 购物与购物匹配, 新闻与新闻匹配。我们需要使用大量机器学习技术来收集特定页面的主题和内容, 同时也离不开人工协助。
此外, 还会引入评分团队, 向他们展示查询和结果, 并要求他们从 0 到 10 为结果的真实性打分。有时候问题很明显, 如果有人搜索「Facebook」, 但响应结果的第一条居然不是 facebook.com, 那肯定不能接受。但大多数情况下, 我们会合并来自大量输入的评分, 并将其馈送到索引和主题模型当中, 之后不断重复这个过程。
到这里, 问题才刚刚解决了一半。我们还得提高所谓"查询理解"能力, 也就是意识到搜索"巨石强森"和搜索"道恩·约翰逊"的人其实是想找同样的信息。最终, 我们将积累起一个庞大的同义词和相似性库, 并据此重写查询以降低搜索难度。而且如谷歌所说, 每天他们的引擎中都有 15%的全新搜索, 所以这场理解人们真实需求和扩充新知识的赛跑将永远没有终点。
一段时间之后, 搜索引擎正式上线了, 开始获得更多人的关注、点击和偏好。这里还有一项黄金标准: 如果用户在点击链接后, 不再立即搜索和点击其他链接, 就代表当前结果的质量令人满意。而另一方面, 用户们的点击量越大, 就越能了解他们真正想要的是什么。
此外, 运行搜索引擎还需要不断在速度、成本和质量三者中取得平衡。比如, 当有人输入"YouTube"并按下回车时, 如果搜索整个数据库会耗费太长时间、造成不必要的带宽和存储成本; 如果保留一个容纳整个互联网的数据库, 不但存储成本高昂, 搜索速度也会太过缓慢; 如果设定只显示网络上最受欢迎的 100 个网站, 就能保证速度和成本, 但会存在内容不全面、质量不可靠的情况。同时, 各个网站本身也在不断变化, 搜索引擎的爬虫和排名系统也要持续跟进。