Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按名称搜索文件(使用java、lucene或tech stack)_Java_Spring_Apache_Lucene - Fatal编程技术网

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

按名称搜索文件(使用java、lucene或tech stack),java,spring,apache,lucene,Java,Spring,Apache,Lucene,我有很多图像文件,我想搜索其名称的具体文件。我正在寻找使用Java实现此功能的建议 注意:我使用过ApacheLucene,但它不适用于图像文件。我认为它是按文件内容搜索的 请建议可用于在大量图像文件(TB)中按名称搜索文件的最佳技术 编辑 例如: 用户输入“引擎”,它应给出如下结果: X60_031004_P05_16_AJ126SC_ENGINE_COVER_AWD_2.jt X60_031004_P05_16_AJ127SC_ENGINE_COVER.jt您可以使用org.apache.

我有很多图像文件,我想搜索其名称的具体文件。我正在寻找使用Java实现此功能的建议

注意:我使用过ApacheLucene,但它不适用于图像文件。我认为它是按文件内容搜索的

请建议可用于在大量图像文件(TB)中按名称搜索文件的最佳技术


编辑

例如:

用户输入“引擎”,它应给出如下结果:


X60_031004_P05_16_AJ126SC_ENGINE_COVER_AWD_2.jt X60_031004_P05_16_AJ127SC_ENGINE_COVER.jt

您可以使用
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());
    }

您可以使用Lucene搜索文件名或一般图像元数据。而且它可能是比FileUtils更好的解决方案,尤其是如果你想拥有所有优秀的“搜索引擎”功能的话

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

  • 使用ApacheTika()进行元数据提取
  • 使用apachelucene进行元数据索引和搜索
  • 图像本身的专用存储,在Lucene索引中有一个引用

什么是地段?100.000? 一百万?1亿个?意味着共享驱动器有12到15个包含图像文件的文件夹,大小以TB为单位。(一个文件夹中大约有50k个文件)我没有尝试FileUtils,但我认为FileUtils不会根据驱动器大小或文件量按时间线进行扩展。不过我会试试的。谢谢。我尝试了使用ApacheLucene进行索引和搜索,但当我将数据目录指向image/it文件驱动器路径时,它不起作用。我在PDF文件上试用过,效果不错,我认为lucene根据文件内容将文件名输出为图像文件,没有任何内容(文本),不返回我文件名/pathwell您可以将路径作为单独的字段进行索引。据我所知,您可以定义自己的索引结构。所以你从tika获取信息,并在任何字段中建立索引,比如说一个stringfield,你称之为path或其他什么。如果你不想搜索这些信息,你可以使用StoredField。