根据前面的博客建立了如下的各种索引库的表:
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 对应的网页越符合搜索需求。

本文介绍了如何使用Python建立一个搜索引擎,通过建立词典和后向索引来实现搜索系统的功能。首先,文章详细阐述了词典的构建,接着讨论了后向索引的两个表项及其关系。接着,文章描述了基本思想,即通过搜索关键字在文档中的命中次数对结果进行排序。最后,解释了代码段,包括如何获取关键字的docId集合,统计docId的命中次数,并按照命中次数排序展示搜索结果。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



