1. 搜索引擎是什么?
搜索引擎是我们从互联网中获取信息资源的一种核心工具,它渗透于我们的网络生活中。比如你上网买个商品,查看热点新闻,看娱乐八卦等等,无非一个关键字,一个搜索框的事情。
搜索引擎目前主要分两种:大型的通用web搜索引擎如百度、谷歌、搜狗搜索、必应等等;相对较小规模的,领域性较强的垂直型搜索引擎如电商平台搜索、资讯平台搜索、视频网站搜索等等。
2. 搜索引擎的工作原理?
首先,你可以把自己看作一个搜索引擎的开发者。
现在,在你面前,有一堆商品,和一个任务(让用户快速找到他们想要的商品)。
那么,用搜索引擎的思维会怎么做呢?
简单的工作流程如下:
(1) 商品打码。给商品打上唯一的标签码,方便管理,按照编码次序给商品排列制成表。
(2) 商品标签化。这里你们看到的标签可能会联想到一些比较大概念的标签如“生活”、“娱乐”、“体育”等等;事实上这个步骤的标签会直接从商品的信息内容里面去提取,具体到一些人名、地名、品牌名、气味、专有名词等等;换句话说就是,在这一个步骤中,商品信息内容中一切具有独立表义作用的词,我们都会把它们提取出来,作为这个商品的关键词。(这就是为什么我们在只需要搜索框里面输入关键字就可以进行搜索,因为这样做可以大概率覆盖掉你在搜索你想要的信息时你所能想到的Keyword)
(3) 索引构建。经过 (2) 的处理之后,我们肯定是可以得到一堆商品标签,以及每一个标签所对应的商品编码,这个时候我们可以对数据进行整理,最后可以生成一个像“[标签]——>[商品编码集合]”那样的集合。
这样一来,一个基本的搜索系统原型就出来了。该系统响应用户请求的过程如下:
[用户输入关键字] ————> [查索引] ———— >[得到商品编码] ————>[查编码表找到对应商品] ————> [返回给用户]
不妨想象一下,
如果是10个商品,利用人工稍微看一看,查一查表,便可以快速响应用户的关键词请求了。
如果是百万级、千万级、甚至亿级的商品量,这时候人工已经不再适用。而且在当今快节奏的网络信息时代里,人们对互联网响应速度要求越来越高,要承受大规模的用户请求并且快速响应,这就需要技术接入了。换句话说,就是需要不断地去强化上述的搜索工作流程。因为数据量变多以后,上述工作流程的每一步细节包括商品储存、查找、修改、更新、删除等等,都对工作效率产生了极其重要的影响。
3. 为何可以达到如此之快的搜索效率?
这里不打算讲解一些算法层面的知识,主要是一些思想上的讲述。由前文已经知道,我们要对系统进行强化,提升其工作效率,就必须要对每一个工作细节进行升级和强化,使其在面对海量数据处理时还能保持着高效率的工作能力。这样就可以将原来的系统原型变成我们如今可见的高效率的搜索引擎了。
不难发现,前文讲述这么多主要是在表达一个观点:要想事情变得高效,我们需要对这个事情创建“索引”。
简单地说就是我们要对所做的事情做一些处理,这个处理让我们这个事情做起来能产生像“查新华字典目录找到目标字”一样的效果。要提升搜索效率,就意味着要让2.(2)中的工作流程越来越快。从而就要对数据储存、排序、增删改查操作等一系列工作细节进行升级。
比如说:查找,我们在查找某个关键词的时候,面对海量数据时,逐个去找这是不现实的,有没有可能我们在处理数据时做一些特别的设计和处理,避免我们在查找时扫描全表的低效率操作?答案是肯定的。而这些特别的设计和处理,你不妨把它看作对这些工作细节的“索引”。这有点像“我们以前上学时看书自己会做笔记帮助理解知识点,以后回头温习时可以快速理解知识”这样的行为的背后思想是相似的。
总体来说,搜索效率之所以如此快速,主要思想是对系统中的每一个工作细节进行“局部创建索引”,背后就是我们常常见到但是一般都看不懂的所谓的算法和数据结构。如想更深一层进一步去了解这系统背后的所谓的算法与数据结构等等知识;也可以照着本次答文的思路去逐一进行调研自己想了解的知识。
推荐阅读
有必要也可以找一些相关书籍来看,这里简单推两本。
- 比较基础的如《这就是搜索引擎:核心技术详解》
- 能进行英文阅读的朋友可以看看《Introduction to Information Retrieval》,这本将整个信息检索流程讲得比较详细。
你说的什么乱七八糟的