Java-Counting巨大文本文件中出现的单词

时间:2011-02-09 06:45:38

标签: java full-text-search

我有一个115MB的文本文件。它包含大约2000万字。我必须将该文件用作单词集合,并使用它来搜索集合中每个用户给定单词的出现。我使用这个过程作为我项目的一小部分。我需要一种方法以更快更正确的方式找出给定单词的出现次数,因为我可以在迭代中使用它。我需要建议我可以使用的任何API或以更快的方式执行任务的其他方式。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:3)

这种事情通常使用Lucene实现,特别是如果您要重复重启应用程序或者没有大量内存。 Lucene也支持lots of other goodies

但是,如果你想“自己动手”代码,并且你有足够的内存(可能是1Gb),你的应用程序可以:

  • 将文件解析为单词序列,
  • 过滤掉停用词,
  • 构建一个“反向索引”作为HashMap<String, List<Integer>>,其中String值是唯一的单词,List<Integer>对象给出文件中出现的单词的偏移量。

处理大文件可能需要几秒钟(或几分钟)。但是,一旦创建了内存中反向索引,就可以非常快速地进行搜索。 (每次搜索可能只有亚微秒。)