如何使用Java索引磁盘上的文件名

时间:2019-12-25 05:41:50

标签: java file elasticsearch search

我写了一项在磁盘上存储数百万个文件(20-30mb文件)的服务,我需要编写一个搜索功能来按名称查找文件(无需搜索文件内容)或在资源管理器中查看文件(例如,在浏览器中以文件夹结构浏览)。我想用Java使其快速,可靠和简单。说,我计划运行两个服务,这两个服务都可以用于按名称模式上载文件或搜索文件。什么是实现这一目标的最佳技术/方法?将文件以及数据库中的路径和名称存储在磁盘上,对数据库进行搜索,然后从数据库中按路径获取发现?还有其他好主意吗?我曾考虑过Elasticsearch,但看起来是一个沉重的解决方案。

1 个答案:

答案 0 :(得分:1)

这个问题过于笼统,而不是SO的格式(具体的编程问题主要是带有代码片段的代码,这些片段试图解决给定技术集下的具体技术难题)。

有很多方法可以满足您的要求。但是,仅根据您提出的问题中的信息,就不可能推荐一些东西,因为我们并不真正了解您的要求。我会解释:

  

我计划运行两项服务,这两项服务都可用于按名称模式上传文件或搜索文件。

这是否意味着必须分发文件系统? 如果是这样,请考虑使用AWS的Cloud解决方案风格的S3。

如果您不能在云中运行,here可以找到分布式文件系统的完整列表。

Elasticsearch当然也可以用作搜索引擎,但它更像是一个成熟的搜索引擎,因此在这种情况下对我来说似乎太过强大了。

您可能希望直接与lucene一起使用,这样就不需要运行可能也会失败的其他过程(ES是基于lucene构建的)。如果满足要求,Lucene将再次将其索引直接存储在文件系统中。

现在您也正在谈论数据库-再次是一个可能的方向,尤其是如果您的项目中已经有一个数据库。通常,关系数据库管理服务器支持搜索,但是有更高级的解决方案:例如在PostgreSQL中,您有一个GIN索引(倒排索引),同样的全文搜索概念也超出了标准SQL的LIKE操作员。

另一个想法:使用本地磁盘。如果您使用的是Linux,则有一个名为“ locate”的索引实用程序,可以将索引创建委托给该实用程序。

因此,选择是您的。

相关问题