在前一节中通过getentry函数的处理,在hash表中查找是否含有该词条,如果没有,则初始化一个词条entry变量。然后通过addentry进行处理。
2.3.4 addentry函数分析
加入词条到hash表的过程主要分为两部分:已有词条、新词条。
如果是 hash 表中未出现的词条。 在这个过程中写入了频率和位置信息(位置信息含有 strcuture 结构信息,便于在以后的压缩过程中处理);先将这些 TP 位置信息放在 currentChunkLocationList 链表中。
addentry代码片段1
在原先的 hash 表中出现的词条,则需要判断是否属于同一个 field (mata)和file中的词条。如果是,直接在 Location 中增加位置信息,否则需要在增加 Location 结构保存。 在处理 Location 位置信息时,需要考虑随着位置信息的逐渐增加,需要扩容位置信息。
addentry代码片段2
如果发现不在同一个meta或者文件中,则需要在建立一个LOCATION结构保存新的位置信息。
addentry代码片段3