在搜索引擎的设计逻辑中,为每一搜索目标文件都生成一个唯一的 ID ,而文件的内容可以看成是很多提取出来的关键词的集合,提取关键词的过程叫做 “分词”。
例如,文件1的 ID 是 1001,经过分词,总共提取出30个关键词,那么搜索引擎就会记录每个关键词出现在文章当中的位置和出现次数。
下面说说什么是 倒排索引,有倒排索引,相应的肯定就有正向索引。
正向索引
正向索引的结构:1
2
31001(文档1) > {中国(关键词1):{出现次数:2;出现位置:10,15},{劳动(关键词2):{出现次数:3;出现位置:2,7,11},...
1002(文档2) > {中国(关键词1):{出现次数:3;出现位置:6,23,45},{体育(关键词3):{出现次数:1;出现位置:1},...
...
如图所示:
对于 正向索引,假设,用户搜索关键词“中国”,搜索引擎就要完整遍历索引中所有信息,找到包含“中国”的文件,然后依据特定的打分排序算法,整理出文件先后顺序,再返回给用户。可以看出,正向索引明显的弊端就是,对于海量数据的搜索引擎系统,正向索引结构效率低下,无法快速响应用户。
倒排索引
倒排索引的结构:1
2
3
4中国(关键词1) > {1001(文档1):{出现次数:2;出现位置:10,15},{1002(文档2):{出现次数:3;出现位置:6,23,45},...
劳动(关键词2)> {1001(文档1):{出现次数:3;出现位置:2,7,11},...
体育(关键词3)> {1002(文档1):{出现次数:1;出现位置:1},...
...
如图所示:
对于 倒排索引,同样假设,用户搜索关键词“中国”,搜索引擎就要不必完整遍历索引中所有信息,很快就能找到包含“中国”的文件,然后依据特定的打分排序算法,整理出文件先后顺序,返回给用户。可以看出,倒排索引很好解决了正向索引的弊端就是,对于海量数据的搜索引擎系统,倒排索引结构效率较高,可以较快响应用户。