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

Rij*_*eph 2 java file-io

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

我想过Scanner为此使用类,但不知道这些大文件的性能.性能不是很高的优先级,但它应该是一个可接受的标准.

ret*_*eto 6

它应该是一个可接受的标准

我们不知道什么是可接受的标准.如果我们谈论交互式用户,那么可能不会有一个简单的解决方案来扫描300万个文件并返回一些内容,比如说<5秒.

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

扫描仪/ grep/find等基于解决方案的主要问题是它们很慢,不会扩展,而且昂贵的扫描工作必须反复进行(除非你存储中间结果......但那样做不简单,基本上是一个劳动力昂贵的重新实现索引器).使用索引时,索引的创建和更新很昂贵,查询很便宜.