SEO扫盲之搜索引擎倒排索引技术
任何的搜索引擎都想要做到以下三个目标:
- 更全
- 更快
- 更准
第一个目标就是通过爬虫来实现,抓取和覆盖更多的页面;而第二个“更快”的目标用到的技术之一就是这篇文章要讲的“索引技术”中的倒排索引;而第三个目标似乎就比较难实现了,需要用到“排序”、“链接分析”和“用户研究”等技术。
进入主题,什么是索引,为啥要索引?
索引在日常生活中很常见,比如书籍的目录,目的就是为了让人们更快的找到相关的章节或主题等。这种由章节名称对应页码的索引也称为“正排索引”。常见的正排索引还有数据库中的id,根据id可以快速的找到对应的文章,当然了,在数据库里面我们还经常会自建索引,比如对文章的标题进行索引,这样就可以根据标题名称快速的找到文章对应的信息了。
因此正排索引就是可以根据id或其它索引字段到文档的一个信息关联。看起来像下面这样的:
可以根据id快速定位到对应的文档信息。
但是,假如你想要知道“SEO”这个词都出现在哪些文档里面,这个似乎通过目录,或者标题等很难快速的定位,因为目录和标题中没有出现SEO的章节或文档,但是内容里面也可能出现。
这时候就需要利用另外的一种技术,就是“倒排索引”,倒排索引就是根据某个词来查到对应的id(正好跟正排索引相反)。
我们用个简单的案例说明一下:
(正排索引)
(倒排索引看起来像这样的,实际更复杂,后面说)
我们可以看到,倒排索引其实是先将文档进行分词处理,然后呢,标记每个词都出现在哪些文档里面。这样的话,要查询某个词都在哪里出现了,是不是就很快就找到啦?
这也是我们看到百度对搜索的关键词也进行分词的原因,搜索引擎先将用户的查询进行分词,然后根据词去找对应的文档id,然后再通过正排索引把对应的文档返回给用户(当然了,其实中间还要经过一系列的步骤的,比如排序啥的)。
我们上面看到的倒排索引的是比较简单的,实际上搜索引擎的倒排索引文件还记录的更多的信息:每个单词频率信息(TF)、单词对应的文档频率信息(IDF)以及单词在文档中出现的位置信息。
单词频率信息就是这个单词在文档中出现的次数。
文档频率信息代表了在文档集合中有多少个文档包含了某个关键词。
位置信息就是单词在文档中的位置,在哪个标签里面啊,文章的前面、中间、后面?
有了这玩意之后,当用户搜索关键词的时候,搜索引擎就会先对用户的搜索进行分词,然后呢从倒排索引库中找到包含这些单词的文档id(网页),接着利用单词频率信息、文档频率信息对这些候选结果进行排序,计算文档和查询的相似性,最后按照相似性得分从高到低进行排序输出。
看到这里,似乎发现了什么[坏笑]。这不就是我们SEO操作中在内容里面控制关键词出现次数和位置的原因么?
好吧,其实这个排序不仅仅是计算相关性那么简单,是吧?不然SEO岂不是太好做了?还要计算页面的权重、用户意图、以及历史搜索数据等等一大堆的东西结合在一起才是最终的排名结果。
那个单词频率信息和文档频率信息是用一个叫“TF-IDF算法”实现的。有兴趣可以了解下??
更多相关知识,嗯……看心情更新。
码字不易,转发试试?