2

我有大量的 PDF/Word/Excel/等。要索引的文件(现在 40GB,但在某些月份可能高达 1000GB),我正在考虑使用 Solr,带有 DataImportHandler 和 Tika。我已经阅读了很多关于这个主题的主题,但是有一个问题我仍然没有找到解决方案:如果我索引所有文件(完整或增量导入),删除文件系统中的一个文件,然后再次索引(使用delta import),则不会从索引中删除该文件对应的文档。

这里有一些可能性:

  • 进行完全导入。但我想尽可能避免这种情况,因为我认为这可能非常耗时(几天,但不是很重要)和带宽消耗(主要问题,因为文件位于共享网络驱动器上)。
  • 实现一个脚本,该脚本将验证索引中的每个文档是否存在相应的文件(占用更少的带宽)。但我不知道我是否应该在 Solr 内部或外部执行此操作,以及如何操作。

您还有其他想法或执行第二种解决方案的方法吗?提前致谢。

一些细节:

  • 我将使用 FileListEntityProcessor 的“newerThan”选项进行增量导入。
  • 如果我存储文档被索引的日期,它对我没有帮助,因为如果我在上次导入时没有索引一个文档,可能是因为他已被删除或因为它没有更改(增量导入)
  • 我既有存储字段也有未存储字段,因此我认为使用 Solr 4.0 的新可能性仅更改文档中的一个字段不是解决方案。
4

1 回答 1

2

您是否考虑过使用文件系统监视器来捕获删除和更新索引?

我认为 apache.commons.io 支持这一点。
查看apache.commons.io.monitor包、FileAlterationObserverFileAlterationMonitor类。

于 2012-11-13T12:07:08.610 回答