2017-10-13 22 views
-1

我有很多图像文件,我想按名称搜索特定文件。我正在寻找建议来实现这个使用Java。按名称搜索文件(使用java,lucene或tech stack)

注:我已经使用Apache lucene,但它不适用于图像文件。我认为它通过文件内容进行搜索。

请提出什么是可以用于在大量图像文件(以TB计)中按名称搜索文件的最佳技术。


编辑

例子:

用户进入 '引擎',它应该给结果一样:

X60_031004_P05_16_AJ126SC_ENGINE_COVER_AWD_2.jt X60_031004_P05_16_AJ127SC_ENGINE_COVER.jt

+0

什么是批次? 100.000?百万? 1亿? – RobAu

+0

很多意思是,共享驱动器有12到15个包含图像文件的文件夹,大小在TB中。 (在一个文件夹中约50k文件) –

回答

0

您可以使用org.apache.commons.io.FileUtils,如下所示:

File root = new File("C:\\"); 
    String fileName = "Engine"; 
    String[] extensions = {"jt"}; 
    boolean recursive = true; 
    Collection files = FileUtils.listFiles(root, extensions, recursive); 
    for (Iterator iterator = files.iterator(); iterator.hasNext();) { 
     File file = (File) iterator.next(); 
     if (file.getName().toLowerCase().contains(fileName.toLowerCase())) 
      System.out.println(file.getAbsolutePath()); 
    } 
+0

我还没有尝试过FileUtils,但我认为FileUtils不会通过考虑驱动器大小或文件卷来缩放时间线。虽然我会试一试。 –

0

您可以使用Lucene搜索文件名或一般图像元数据。这可能是比FileUtils更好的解决方案,特别是如果你想拥有所有不错的“SearchEngine”功能。

我没有与这种要求任何经验,但我会做这样的:

  • 与Apache提卡(https://tika.apache.org/
  • 元数据索引和搜索与Apache Lucene的
  • 元数据提取图像本身的专用存储在Lucene索引内引用
+0

谢谢。我试着用Apache Lucene进行索引和搜索,但是当我将数据目录指向image/it文件的驱动器路径时,它没有奏效。我试过它在PDF文件和它的工作,我认为lucene输出基于文件内容的文件名称作为图像文件没有任何内容(文本),不返回我的文件名/路径 –

+0

以及你可以索引路径作为一个单独的领域。为了我的理解,你可以定义你自己的索引结构。所以你可以从tika获取信息,并在任何领域为它们编制索引,让我们说一个你称之为路径的字符串字段或其他东西。如果你不想搜索这些信息,你可以使用StoredField。 – dom