谈谈搜索引擎的基本原理
今天郑州北斗信息技术有限公司和大家简单谈谈搜索引擎的基本原理,所有的站长都知道 传统的搜索引擎的定义:是指一种对于指定的查询,能够返回与之相关的文档集合的系统。 而搜索引擎其中最简单的实现方式就是文本检索系统。通过返回包含关键字的页面,来满足用户的检索需求。形式化的表达就是给定一系列关键字集合k,要求返回所有包含关键字的文档d,对d中的任意一个文档d,包含k中的任意一个关键字k。 大多数情况下我们采用倒排索引的方式来实现这个系统。所谓倒排索引,就是对关键字建立索引,记录包含这个关键字的文档集合d。对于请求的关键字集合,找出所有关键字对应的索引,并对索引求交,最后返回同时存在于所有索引中的文档。 在百度搜索引擎页面,我们不仅允许用户输入关键字,也可以输入任何长度在一定范围内的文本。此时我们需要对文本做一定处理,切分成一系列关键字,从而能够从倒排索引中找出对应的文档。 大家也许会有疑问:为什么要对输入文本做切分,如果不切分的话有什么问题？ 我们可以想象一下,如果不对输入文本做切分,直接用输入文本去做匹配,会怎么样？首先,得到的结果会非常少,因为直接用全部文本匹配,就失去了灵活性,对结果限制的非常死,必须完全匹配才能满足要求；其次,系统性能会非常差,因为需要对所有长度的文本都建立索引,这是指数级的,在实际系统中根本不可能实现。再考虑一下另一个极端？我们对输入文本做单字切分,结果又是怎样？我们会得到大量无关的页面,不仅浪费系统性能,对相关性计算也造成了巨大的压力。 今天就先说到这里,这些是郑州北斗信息有限公司这些年来做优化的一些感想,想能够和所有的站长分享下。