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



我编写了一个在磁盘上存储数百万个文件(20-30mb文件(的服务,我需要编写一个搜索函数来按名称查找文件(无需搜索文件内容(或在资源管理器中查看文件(例如,在浏览器中导航作为文件夹结构(。我想让它在Java中快速,可靠和简单。比如说,我计划运行两个服务,这两个服务都可用于上传文件或按名称模式搜索文件。使用什么来实施此目的的最佳技术/方法是什么?将文件以及路径和名称存储在磁盘上,搜索数据库并从数据库中按路径获取结果?还有其他好主意吗?我想到了弹性搜索,但看起来是一个沉重的解决方案。

这个问题太宽泛了,而不是SO的格式(具体的编程问题主要是代码片段,试图解决给定技术集的具体技术难题(。

有很多方法可以满足您的要求。然而,仅基于您问题中提供的信息,不可能推荐某些东西,因为我们并不真正了解您的要求。我将解释:

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

这是否意味着必须分发文件系统? 如果是这样,请考虑云解决方案样式 aws 的 S3。

如果您无法在云中运行,您可以在此处找到分布式文件系统的完整列表。

Elasticsearch当然也可以作为一个搜索引擎,但它更像是一个成熟的搜索引擎,所以在这种情况下对我来说看起来有点矫枉过正。

您可能希望直接使用 lucene,这样您就不需要运行也可能失败的其他进程(ES 建立在 lucene 之上(。Lucene 将直接将其索引存储在文件系统上,如果它满足要求。

现在你也在谈论数据库 - 又是一个可能的方向,特别是如果你的项目中已经有一个。一般来说,关系数据库管理服务器对搜索有一些支持,但也有更高级的解决方案:例如,在PostgreSQL中,你有一个GIN索引(倒排索引(,同样是全文搜索的概念,远远超出了标准的SQL的LIKE运算符。

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

所以选择权在你。

相关内容

最新更新