<分区>
我有一个简单的要求,用户输入一堆单词,系统扫描超过 300 万个文本文件并找到包含这些关键字的文件。如果没有复杂的搜索/索引算法,最有效和最简单的实现方法是什么?
我考虑过为此使用 Scanner
类,但对如此大的文件的性能一无所知。性能不是很重要,但应该处于可接受的标准。
<分区>
我有一个简单的要求,用户输入一堆单词,系统扫描超过 300 万个文本文件并找到包含这些关键字的文件。如果没有复杂的搜索/索引算法,最有效和最简单的实现方法是什么?
我考虑过为此使用 Scanner
类,但对如此大的文件的性能一无所知。性能不是很重要,但应该处于可接受的标准。
最佳答案
it should be in a acceptable standard
我们不知道可接受的标准是什么。如果我们谈论交互式用户,可能不会有一个简单的解决方案可以扫描 300 万个文件并在小于 5 秒的时间内返回一些内容。
一个合理的解决方案是搜索索引,可能基于 Lucence .
基于 scanner/grep/find 等的解决方案的主要问题是它们速度慢,无法扩展,而且必须一遍又一遍地完成昂贵的扫描工作(除非你存储中间结果......但这并不简单,基本上是一个昂贵的劳动力重新实现索引器)。当使用索引时,只有索引的创建和更新是昂贵的,查询是廉价的。
关于java - 在 300 万个文本文件中搜索匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950487/