假设我现在需要构建一个搜索引擎,并且搜索引擎背后的海量的数据我已经获取了。假设我的搜索引擎使用了 pagerank 类型的图排序算法,则系统可以先利用数据构成一个图(由于数据量较大,构图的代价较高),之后根据排序算法对图中的节点进行排序。为了避免用户在提交检索请求时的长时间等待,上述图的计算结果应该被保存(保存在内存或者磁盘中)
那么,当搜索引擎所用的数据有所更新(例如增加新数据或者旧数据被修改)时,典型的处理方法是什么呢?
BTW,我目前主要有两种想法:
- 每隔一段时间(较长的时间,例如 3 天)重新构图,重新进行相关计算相关内容并将数据保存在数据库中
- 将图保存在内存中,并且在构图的程序中监听文件系统的改变情况,当监听到文件改变时,程序自动修改图结构(修改图结构之后,又要重新进行排序算法,因此在进行排序的过程中,也要给之前的结果做备份)