搜索技术,无论是对个人,还是对企业,都是非常重要的技术。
互联网信息技术,对于人类来说,最本质的改变在于,极大地扩大了人类的信息获取半径。瑞文文摘站内查询
2017 年,IDC 发布的《数据时代 2025》白皮书中,就提到了互联网中的信息总量,到 2025 年,将大财 160 亿ZB,按照全球的网民按照 50 亿人计算,意味着每个人将被分配到 3。2 ZB 的信息量。这样的信息量,是在互联网之前的时代,在靠书本和语言传播信息的年代无法想象的。
面对海量的信息,如何找到我们所要的信息,是在互联网时代必备的技能之一。而搜索技术,就是这样一把利器,让用户更快地找到自己想要的内容。
回顾互联网的发展历程,起初新浪,网易等各大门户网站是用户浏览的主要站点。但很快,随着互联网信息的增长,门户分类的方式已经无法满足用户寻找信息的需求。接下来的故事,大家也就知道了,像 Google、百度这样的公司,依靠搜索引擎技术,找到了新的商业变现模式——“关键词广告”,成为了 PC 互联网时代的王者。
我们每天都在使用着各种各样的搜索功能,在微信里,在小红书里,在手机系统里,在浏览器里,我们都在“搜索”。瑞文文摘站内查询
那么搜索到底是一个怎样的技术呢?
它是怎样做到让我们如此之快地找到想要的信息的呢?
一、搜索
搜索功能,本质上都是在数据库里进行检索。
比如,在一个人才数据库中,高启强的数据是:
可以理解为,在一份纸质表格里找数据。例如现在在一个 20 行 6 列的表格里,我们有找到高启强的信息,那么只要从第 1 行到第 20 行,每行 5 个数据局都过一遍,直到高启强。这就是搜索。
这样的搜索方式在数据库量级不大的情况下是可行的,但如果数据量上升,达到 2000 万行,那原来的方式,就行不通了。所以就需要使用更高效的搜索,也就是通过建造[[索引]]的方式来提高搜索速度,例如,京海市的人才库里有 2000 万人,如果我先找到姓“高”的人才,再从高姓人才中查找高启强,速度则会快很多。
在 Elasticsearch 中,使用到的“倒排索引”技术来提高搜索的有效性和可用性。瑞文文摘站内查询
例如 ES 会为高启强建立这样的索引:
38 岁 ~ 高启强
鱼贩 ~ 高启强
京海市 ~ 高启强
这样,我在搜索京海市的鱼贩时,也可以搜索到高启强,提高了搜索的有效性和准确性。
(倒排索引示意图,图片来源于网络)
二、全网搜索 vs 站内搜索
上面讲到,搜索本质上都是在自己的数据库中检索,那么根据一般根据搜索的范围划分,我们可以将搜索技术分为全网搜索和站内搜索
全网搜索,如 google,百度
站内搜索,如 淘宝、微信里的搜索
两者的区别在于,全网搜索需要检索全网的内容,所以搜索引擎需要利用爬虫技术,爬取网页的资料,整合到自己的数据库中,才能被用户搜到。例如 google 的 spider 爬虫机器人,就会定期爬取全网的所有页面,收录到 google 的系统中。只有被收录的网页,才能够在 google 搜索到。
而站内搜索,因为搜索的内容都是自己的,所以更重要的是怎样将内容更好地组织好,放到搜索引擎中,让用户更快搜索到。举一个大家日常都在使用的例子 —— 微信搜索:微信就将自己的搜索结果分为聊天记录、联系人、文章、表情、百科……等等不同的分类,让用户更快地找到想搜的内容。