根据前面的博客建立了如下的各种索引库的表:
1.词典(对每个关键字分配一个 wordId)
词典放在命名为 backwardTableDb.db 中的 wordIdTable 中,见部分字典截图如下:
2.建立后向索引,及相关表项
后向索引有两个表项,其中第一个表项是后向索引表,其指定每个wordId,以及出现过该关键字的doc 的数量,同时还有该关键字的 doc hits 在后面一个表中的偏移,后一个表是后向表,记录了docId,以及对应当前关键字的hitlist,关于后向索引表的具体内容,百度吧。。实现是为了根据偏移快速定位到对应的docId的位置,人为增加了一列 docIdIndex项,两个表如下:
上述两个表的关系是:第一个表中的 wordId 出现过的网页的编号(docId)的连续存在第二个表中,第一个表中 offset 指出了存储编号的起始位置,该位置接下来的 nDocs个表项都是对应 wordId 出现过的 wordId
3.基本思想描述:
对输入的搜索语句,先进行分词,对每个关键字,根据后向索引表,找到对应的命中 docId 的 set,综合所有set评估docId,最后哪个docId 中命中的关键字个数越多,该docId 对应的网页越符合搜索需求。