我正在尝试索引一个"版本化的文件系统"使用Solr在哪里:
每个文件都是由32字节guid(oGuid)和
每个版本的文件都可以通过另一个32字节的guid(vGuid)来识别。
例如,下面的文档是为文件" / tmp / x"
添加的
path: /tmp/x
oGuid: fdf2eec39a8a42ca8fddb17ad65017ba
vGuid: b2f1d0204a0743ff82b0056c82ed84e6
mtime: 2016-07-14T21:35:21Z
size: 12580
然后,如果同一文件的另一个版本进来,我将添加文件:
path: /tmp/x
oGuid: fdf2eec39a8a42ca8fddb17ad65017ba
vGuid: 83dc77c8ed90439bbf38ae42c07bea13
mtime: 2016-07-15T20:30:11Z
size: 1780
此时,当用户在特定时间点搜索/浏览文件系统时,我必须返回文件的最新匹配版本。
例如,如果用户在的最新时间点查找文件 / tmp / x。我需要返回它的最新版本 的 vGuid:83dc77c8ed90439bbf38ae42c07bea13
我想到了两种可能的方法:
请您提出一些更有效和实用的方法吗? 感谢
答案 0 :(得分:0)
如果用例是"最新版本"和"在特定日期" - 每次更改时,我可能会对文件的最新两个版本进行双重索引。带有标记字段(最新)的最新版本和第二次到现在不的上一版本具有该标记。
使用自定义更新请求处理器(获取并更新相同ID的最新记录)也可以实现这一点,尽管这不是一个简单的实现。
或者,我只有两个集合,一个用于最新,一个用于指定特定日期。索引到第一个版本覆盖以前的版本而不是第二个版本。