如何快速搜索许多文本文件中的字符串?

时间:2018-03-28 20:49:33

标签: java performance sorting optimization

我正在为我的辩论团队制作一个程序,其中一个功能是搜索某些关键字的文本文件。由于在辩论中准备演讲总是有限的时间,速度是我的首要任务,但到目前为止我尝试的搜索方法还不够快。我尝试过的最快的方法就是使用grep来搜索每个文件并且它技术上工作,但它有大约2500个文件可供搜索,所以即使每个文件需要5毫秒,在搜索多个关键字时,或者在用户需要时搜索不同的内容时,这个时间会非常快。

我真正需要的是一种方法,可能确保我的程序在搜索时不会搜索每个文档,或者基本上减少必须查看的文档数量。有谁知道这样的事情是否可能?或者,如果没有,有人能指出我的研究方向,以其他方式减少搜索时间吗?

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找文字搜索引擎。我相信Apache Lucene会帮助你。您可以做的是根据这些文件的内容创建所有文件的索引。然后,您可以快速搜索该索引以查找有趣的单词和句子,以便Lucene告诉您该单词/句子哪个文件最匹配。 索引应存储在一个文件中,这样您就不必在每次开始搜索时重新创建索引,而只在新文档到来时对其进行扩展。 Lucene会为你做更多的事情,因为它可以搜索类似的单词(就像google一样)。 描述Lucene引擎的使用是我认为超出了这个简短答案的范围,但我相信你会发现这个很好的介绍如下: http://www.lucenetutorial.com/sample-apps/textfileindexer-java.html

答案 1 :(得分:0)

使用Lucene或Vicctor所述的某种索引。

或者,请参阅其他类似grep的解决方案:

或者,如果您想学习如何编码,请亲自尝试一下!