第一章:搜索引擎概述

大家好,我是你们的讲师。做了十几年搜索架构,今天咱们聊聊搜索引擎到底是什么。

说白了,搜索引擎就是一个帮你从海量信息里找到想要内容的东西。你输入几个关键词,它就能把最相关的结果排在最前面。听起来简单?背后的门道可不少。

什么是搜索引擎

搜索引擎的核心就三件事:抓取、索引、检索

  • 抓取:像蜘蛛一样爬遍互联网,把网页内容拿回来
  • 索引:把拿回来的内容整理成方便查找的目录
  • 检索:用户输入关键词后,从索引里找出最匹配的结果

我刚开始做搜索时,以为就是写个SQL查数据库。后来发现完全不是那么回事。搜索引擎面对的是非结构化数据,而且数据量是TB甚至PB级别的。你想想看,用传统数据库去查几十亿条记录,响应时间能控制在100毫秒以内吗?

核心要点:搜索引擎的本质是倒排索引。简单说,就是记录每个词出现在哪些文档里。这样用户搜"苹果",直接查这个词对应的文档列表就行,不用遍历所有文档。

搜索引擎的发展历史

搜索引擎的历史,我把它分成三个阶段:

阶段 时间 代表产品 特点
萌芽期 1990-1997 Archie、Yahoo! 人工分类、目录式检索
发展期 1998-2010 Google、百度 PageRank、全文检索
成熟期 2010至今 Elasticsearch、Solr 分布式、实时、开源

我记得2000年左右,Google刚出来时,大家都觉得这玩意儿太神奇了。那时候我用Yahoo!搜东西,经常翻好几页都找不到想要的。Google一出来,搜索结果准得吓人。为什么?因为它用了PageRank算法,不光看关键词匹配,还看网页之间的链接关系。

嗯,这里要注意。早期的搜索引擎都是爬全网的,但企业级搜索引擎不一样。企业搜索面对的是内部数据,比如文档、邮件、数据库记录。数据量虽然没互联网那么大,但对实时性安全性要求更高。

个人经验:我在2015年帮一家电商公司搭建搜索系统时,他们每天有500万条商品数据更新。如果用传统方式重建索引,一次就要4个小时。后来我们改用增量索引,每次只更新变化的数据,时间缩短到5分钟以内。

企业级搜索引擎的应用场景

企业级搜索引擎到底用在哪些地方?我总结了几类常见场景:

  • 站内搜索:电商网站搜商品、知识库搜文档、论坛搜帖子
  • 日志分析:运维人员查错误日志、安全人员分析攻击记录
  • 数据聚合:把多个系统的数据统一搜索,比如CRM、ERP、OA
  • 推荐系统:基于用户行为数据做个性化推荐

我曾经遇到过一个客户,他们的OA系统里有几十万份合同,员工找一份合同要翻半天。后来我们帮他们搭了搜索系统,输入合同编号或者客户名称,秒出结果。你想想看,这效率提升了多少?

为什么会这样?因为企业级搜索引擎有几个关键能力:

  1. 分词:中文搜索必须能正确切词。"南京市长江大桥"不能切成"南京市长/江大桥"
  2. 排序:不光看关键词匹配,还要考虑文档质量、时效性、用户偏好
  3. 聚合:按类别、时间、地区等维度统计结果
  4. 高亮:在结果中标记出匹配的关键词

避坑指南:我曾经在项目中踩过一个坑——忽略中文分词。当时直接用英文的分词器处理中文,结果"中华人民共和国"被切成了"中华/人民/共和国",搜索"中国"完全匹配不到。后来换成了IK分词器,才解决问题。

说到分词,我给大家看个简单的例子。假设我们要搜索"苹果手机价格":

// 错误的分词结果
苹果 / 手机 / 价格

// 正确的分词结果
苹果手机 / 价格
// 或者
苹果 / 手机 / 价格

你看,不同的分词方式会影响搜索结果。如果用户想搜"苹果手机"这个品牌,但分词切成了"苹果"和"手机",那搜出来的结果可能包含"苹果"和"手机"两个词的所有文档,相关性就差很多。

好了,第一章的内容就到这里。总结一下:

  • 搜索引擎的核心是抓取、索引、检索
  • 发展历史从人工分类分布式实时搜索
  • 企业级应用场景包括站内搜索、日志分析、数据聚合、推荐系统

下一章,我会带大家深入了解倒排索引的原理和实现。这是搜索引擎的基石,搞懂它,后面的内容就顺了。

课后思考:你所在的公司有没有搜索需求?如果用传统数据库实现,会遇到哪些问题?

公众号:蓝海资料掘金营,微信deep3321