怎么实现一个搜索引擎

优采云 发布时间: 2022-05-09 21:35

  怎么实现一个搜索引擎

  

  概 述

  在这个信息爆炸的时代里,我们平时想要去找一些自己感兴趣的东西通常都是通过搜索引擎来帮你完成查找的。用过搜索引擎的人都知道,我们在搜索栏中输入我们需要的查找的关键字,点击搜索就会得到一个结果页面,这个结果页面的内容就包含了我们要查找的关键字。那么搜索引擎到底是如何高效查找目标内容呢?本文主要介绍搜索引擎的一些实现的相关技术。

  怎么从文章里面找到你需要的内容?

  那么第一个问题来了,我们在搜索框里面输入一大堆信息,搜索引擎是怎么找到我需要的内容的呢??这个问题我认为有一定基础的人都可以实现出来,也有很多人讨论怎么实现效率更高,那我们就先看看我们的请求过程:

  

  查询过程

  当然这里是简单的画了一下,具体看各自业务情况。

  分词处理

  假设我们在搜索框输入了一些搜索关键字,那是搜索引擎在后端会对我们的输入的关键字或者关键词进行分词处理。假设我们现在搜索一句话I Love You!那这段话通过分词之后就是[I,Love,You,I Love You],当然这是英文输入的时候会带上空格,如果是中文的话需要借助一些专业的分词算法库进行分词操作,这里不细说。

  相关的算法

  数据太多了,怎么查找?

  假设我们服务器包含1000篇文章,我们要在这些文章文件里面找到包含有xxx的内容,如果从头开始遍历文件内容然后对匹配的做个记录和收集返回,读取一篇文章所消耗的时间假定为50毫秒,每篇文章搜索消耗0.1毫秒,那这样是不是太浪费服务器资源了!!

  经过简单的推算会明显发现,这个搜索的速度是完全不可能接受的,人家google,sogo可都是几百毫秒取出上亿的列表所以,上述的方法完全行不通,我们需要新的方法。

  倒排索引 该上场了

  倒排索引(英文:Inverted Index),是一种索引方法,常被用于全文检索系统中的一种单词文档映射结构。现代搜索引擎绝大多数的索引都是基于倒排索引来进行构建的。我们在使用搜索引擎查找信息时往往只输入信息中的某个属性关键字,如一些用户不记得歌名,会输入歌词来查找歌名,输入某个节目内容片段来查找该节目等等。

  倒排索引是关键词——文档形式的一种映射结构,实现了通过物品属性信息对物品进行映射时,可以帮助用户快速定位到目标信息,从而极大降低了信息获取难度。

  

  相信大家都使用这个,字典的目录和侧面都做了一些特殊标记,方便我们更快查找到某些内容。倒排索引也是这样的对源数据的内容进行特殊的处理把里面的信息做一个索引记录。

  

  倒排索引图

  一般地,当接受到用户查询请求时,进入到倒排索引进行检索时,在返回结果的过程中,主要有以下几个步骤:

  构建倒排索引是搜索引擎里面至关重要的一个步骤。从技术层面去分析,对于构造一个倒排索引,主要分为两部分:

  词项构造

  词项构造是在构建索引过程中必不可或缺的一个步骤,词项构造效果的好坏往往会直接影响到用户的搜索体验,以及搜索结果的召回。该过程主要是利用分词系统将文档中的各项属性的文本信息拆分成一些表意较强且重要的词汇,便于用户查找。

  

  例如问题:

  一个简单的解决方案:我们对匹配的词语进行统计,引用次数越多,那么匹配度越高,可以认为越准确。

  小 结

  本文介绍的只是简单的全文搜索实现及原理,如果要做专业级的搜索引擎,这些知识是完全不够的。你需要知道爬虫,自然语言分析处理,怎么提高搜索处理的速度等等,海量数据的存储等等知识。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线