Solr + DIH + Tika : indexing huge amount of files, 如何处理删除的文件?

标签 solr lucene apache-tika dataimporthandler dih

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

以下是一些可能性:

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

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

一些细节:

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

最佳答案

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

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

关于Solr + DIH + Tika : indexing huge amount of files, 如何处理删除的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359792/

相关文章:

Solr:是否可以仅使用 Schema API 更改特定字段的日期格式?

javascript - 如何将日期范围字符串转换为可用的 JSON?

Solr 4.4 : StopFilterFactory and enablePositionIncrements

java - Lucene:跨查询比较结果

java - Apache Lucene 4.9.0 类未找到错误

java - eclipse无法导入apache tika src

java - 尝试使用 tomcat 对 solr 实例执行完全导入

elasticsearch - 在容忍拼写错误的同时,我如何有效地找到某些文本中提到的所有人?

apache - Apache Tika 能够提取中文、日语等外语吗?

java - 从打开的 Office 文件中获取元数据