Solr + DIH + Tika:索引大量文件,如何处理已删除的文件?

时间:2012-11-13 11:14:23

标签: solr lucene apache-tika dataimporthandler dih

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

以下是一些可能性:

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

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

一些细节:

  • 我将使用FileListEntityProcessor的“newerThan”选项来执行delta导入。
  • 如果我存储文档索引的日期,它对我没有帮助,因为如果我没有在最后一次导入中索引一个文档,那可能是因为他已被删除或因为它没有更改(delta import) )
  • 我有存储和未存储的字段,所以我不认为使用Solr 4.0的新可能性来更改文档中的只有一个字段可以是一个解决方案。

1 个答案:

答案 0 :(得分:2)

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

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