搜索引擎的基础-倒排索引
昨天看hadoop视频的时候里面提到了google搜索引擎里使用的倒排索引技术,当时没有理解,今天翻阅了一些文档终于觉得拨云见日了,下面从用户在谷歌首页进行网页搜索这个角度来说明。
首先上一张图:
简单的来说,当用户在搜索框输入一个关键词点击查询按钮后,后台程序首先会计算出所查询词的哈希值,然后去哈希表里寻找匹配项,哈希表的每一项通过指针指向一个哈希冲突表,哈希冲突表里存放着具有相同哈希值的单词。也就是说,搜索的第一步获取一个和用户搜索关键词相同哈希值的单词列表(冲突表)。然后会用这个冲突表里的单词和用户搜索词一一比较,找到完全匹配的单词。而冲突表中的每个单词对应一个倒排列表,如下图:
这是一个最简单的倒排列表,每个单词对应唯一的单词ID,每个文档(即用户搜索后返回的网页)对应唯一的DocId,倒排列表中记录着每一个单词在哪些文档中出现过。比如跳槽这个单词,在编号为1,4的文档中出现过,那么就返回编号为1,4的两个网页作为搜索结果展示在页面上。