SEO密码

正向索引和倒排索引

你想当一辈子懦夫,还是被万人拥护。

哪怕你是一个魔鬼。

需要的,不仅仅是勇气。

来自心底的革命呐喊,只为惊醒少数人。

    在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。正向索引也是索引
         它是经过文字提取、分词、消噪、去重之后,搜索引擎得到的就是独特的、能反映页面主体内容的、以词为单位的字符串。再接下来搜索引擎索引程序就可以提取关键词,按照分词程序划分好的词,把页面转换为一个关键词组合的集合,同时记录每个关键词在页面上的出现频率、出现次数、格式(如出现在标题标签、黑体、H标签、锚文字等等)、位置等信息。这样,每个页面都可以记录为一串关键词集合,其中每个关键词的词频()、格式、位置等权重信息也都记录在案。
         搜索引擎索引程序将页面及关键词形成词表结构存储进索引库。下图是简化的索引词表的形式。

简化的索引词表结构

         每个文件都对应一个文件ID,文件内容被表示为一串关键词的集合。实际上在搜索引擎索引库中,关键词也已经转换为关键词ID。这样的数据结构就称为正向索引。
         倒排索引
         正向索引还不能直接用于排名。假设用户搜索关键词2,如果只存在正向索引,排名程序需要扫描所有索引库中的文件,找出包含关键词2的文件,再进行相关性的计算。这样的计算量无法满足实时返回排名的结果要求。

         所以搜索引擎会将正向索引数据库重新构造为倒排索引,把文件对应到关键词的映射转换为关键词到文件的映射。

倒排索引结构

         在倒排索引中关键词是主键,每个关键词都对应着一系列文件,这些文件中都出现这个关键词。这样当用户搜索某个关键词时,排序程序在倒排索引中定位到这个关键词,这样就可以马上找出所有包含这个关键词的文件。