第一章:搜索引擎概述
大家好,我是你们的讲师。做了十几年搜索架构,今天咱们聊聊搜索引擎到底是什么。
说白了,搜索引擎就是一个帮你从海量信息里找到想要内容的东西。你输入几个关键词,它就能把最相关的结果排在最前面。听起来简单?背后的门道可不少。
什么是搜索引擎
搜索引擎的核心就三件事:抓取、索引、检索。
- 抓取:像蜘蛛一样爬遍互联网,把网页内容拿回来
- 索引:把拿回来的内容整理成方便查找的目录
- 检索:用户输入关键词后,从索引里找出最匹配的结果
我刚开始做搜索时,以为就是写个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系统里有几十万份合同,员工找一份合同要翻半天。后来我们帮他们搭了搜索系统,输入合同编号或者客户名称,秒出结果。你想想看,这效率提升了多少?
为什么会这样?因为企业级搜索引擎有几个关键能力:
- 分词:中文搜索必须能正确切词。"南京市长江大桥"不能切成"南京市长/江大桥"
- 排序:不光看关键词匹配,还要考虑文档质量、时效性、用户偏好
- 聚合:按类别、时间、地区等维度统计结果
- 高亮:在结果中标记出匹配的关键词
避坑指南:我曾经在项目中踩过一个坑——忽略中文分词。当时直接用英文的分词器处理中文,结果"中华人民共和国"被切成了"中华/人民/共和国",搜索"中国"完全匹配不到。后来换成了IK分词器,才解决问题。
说到分词,我给大家看个简单的例子。假设我们要搜索"苹果手机价格":
// 错误的分词结果
苹果 / 手机 / 价格
// 正确的分词结果
苹果手机 / 价格
// 或者
苹果 / 手机 / 价格
你看,不同的分词方式会影响搜索结果。如果用户想搜"苹果手机"这个品牌,但分词切成了"苹果"和"手机",那搜出来的结果可能包含"苹果"和"手机"两个词的所有文档,相关性就差很多。
好了,第一章的内容就到这里。总结一下:
- 搜索引擎的核心是抓取、索引、检索
- 发展历史从人工分类到分布式实时搜索
- 企业级应用场景包括站内搜索、日志分析、数据聚合、推荐系统
下一章,我会带大家深入了解倒排索引的原理和实现。这是搜索引擎的基石,搞懂它,后面的内容就顺了。
课后思考:你所在的公司有没有搜索需求?如果用传统数据库实现,会遇到哪些问题?
公众号:蓝海资料掘金营,微信deep3321