按名称搜索文件(使用java,lucene或tech stack)

时间:2017-10-13 09:40:54

标签: java spring apache lucene

我有很多图像文件,我想按名称搜索特定文件。我正在寻找使用Java实现这一点的建议。

注意:我使用过Apache lucene,但它不能用于图像文件。我认为它按文件内容进行搜索。

请建议在大量图像文件(TB)中按名称搜索文件的最佳技术是什么。

修改

示例:

用户输入'Engine',它应该给出如下结果:

X60_031004_P05_16_AJ126SC_ENGINE_COVER_AWD_2.jt X60_031004_P05_16_AJ127SC_ENGINE_COVER.jt

2 个答案:

答案 0 :(得分: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());
    }

答案 1 :(得分:0)

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

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

  • 使用Apache Tika(https://tika.apache.org/
  • 进行元数据提取
  • 使用Apache Lucene进行元数据索引和搜索
  • 图像本身的专用存储,其中包含Lucene索引中的引用