索引的更新策略

搜索引擎需要处理的文档集合往往都是动态集合,即在建好初始索引后,不断有新文档写入系统,同时原先的文档集合内有些文档可能被删除或修改。
动态索引通过在内存中维护临时索引,可以实现对动态文档和实时搜索的支持。
服务器内存总是有限的,随着新加入系统的文档越来越多,临时索引消耗的内存也会随之增加。
当最初分配的内存消耗完时,需考虑临时索引的内容更新到磁盘索引中去,以释放内存空间来容纳后续新增的文档。

  • 索引的更新思想:

倒排索引
对初始文档集合建立的索引结构,一般单词词典都存储在内存,对应的倒排列表存储在磁盘文件中。
临时索引
是在内存中实时建立的倒排索引,其结构和前述的倒排索引是一样的,区别在于词典和倒排列表都在内存中存储。
新文档
进入系统时,实时解析文件并将其加入到临时索引结构中。
删除文档
列表则用来存储已被删除的文档相应的文档id,形成一个文档id列表。
修改文档
可以认为是旧文档先被删除,然后系统再增加一篇新的文档,通过这种间接方式实现对内容更改的支持。

Last modification:June 3, 2022
如果觉得我的文章对你有用,请随意赞赏