java - 在 300 万个文本文件中搜索匹配项

标签 java file-io

<分区>

我有一个简单的要求,用户输入一堆单词,系统扫描超过 300 万个文本文件并找到包含这些关键字的文件。如果没有复杂的搜索/索引算法,最有效和最简单的实现方法是什么?

我考虑过为此使用 Scanner 类,但对如此大的文件的性能一无所知。性能不是很重要,但应该处于可接受的标准。

最佳答案

it should be in a acceptable standard

我们不知道可接受的标准是什么。如果我们谈论交互式用户,可能不会有一个简单的解决方案可以扫描 300 万个文件并在小于 5 秒的时间内返回一些内容。

一个合理的解决方案是搜索索引,可能基于 Lucence .

基于 scanner/grep/find 等的解决方案的主要问题是它们速度慢,无法扩展,而且必须一遍又一遍地完成昂贵的扫描工作(除非你存储中间结果......但这并不简单,基本上是一个昂贵的劳动力重新实现索引器)。当使用索引时,只有索引的创建和更新是昂贵的,查询是廉价的。

关于java - 在 300 万个文本文件中搜索匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950487/

相关文章:

c# - 程序保存文件但不删除同名的旧文件

java - 将 TextView 居中 : Why it doesn't work?

java - 执行外部命令并从 Jython 2.1 读取 stderr/stdout

java - Android - Java如何检查调用了哪个类构造函数

java - JTextPane 中的 html - 标 checkout 现奇怪的框

c++ - 如何从文件中删除记录?

java - 如何使用 OutputStream 在 Java 中向电子邮件添加附件?

java - 并发读取文本文件并将数据放入数组的线程

java - 使用多线程暂停我的应用程序未按预期运行

java - 具有抽象父类的 Hibernate 映射