【问题标题】:How to index file names on a disk with Java [closed]如何使用 Java 索引磁盘上的文件名 [关闭]
【发布时间】:2020-04-15 22:27:47
【问题描述】:

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

【问题讨论】:

  • Elasticsearch 建立在 Lucene 之上。你可以试试。否则,只需一个简单的 SQL 数据库即可使用 LIKE 查询

标签: java file elasticsearch search


【解决方案1】:

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

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

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

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

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

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

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

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

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

所以选择权在你。

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2013-06-11
    • 2019-03-11
    相关资源
    最近更新 更多