Java计数巨大文本文件中单词的出现
作者:互联网
我有一个115MB的文本文件.它由大约2000万个单词组成.我必须将该文件用作单词集合,并使用它来搜索集合中每个用户提供的单词的出现情况.我在项目中只是一小部分.我需要一种以更快,更正确的方式找出给定单词出现次数的方法,因为我可能会在迭代中使用它.我需要有关我可以使用的任何API或以更快的方式执行任务的其他方式的建议.任何建议表示赞赏.
解决方法:
这种事情通常使用Lucene来实现,尤其是在您要重复重新启动应用程序或没有大量内存的情况下. Lucene也支持lots of other goodies.
但是,如果您想“滚动自己的”代码,并且有足够的内存(大约1Gb),则您的应用程序可以:
>将文件解析为单词序列,
>过滤停用词,
>建立一个“反向索引”作为HashMap< String,List< Integer>> ;,其中String值是唯一的单词,而List< Integer>对象给出单词在文件中出现的偏移量.
处理那么大的文件可能需要几秒钟(或几分钟).但是,一旦创建了内存反向索引,您就可以非常快速地进行事件搜索. (每次搜索可能不到1微秒.)
标签:full-text-search,java 来源: https://codeday.me/bug/20191208/2093681.html