我有一个大小为115MB的文本文件,其中包含约2000万单词。我需要将该文件用作单词集合,并使用它来搜索用户提供的每个单词在集合中出现的次数。我在项目中将此过程用作小部分,因此需要以更快、更准确的方式查找给定单词的出现次数,因为我可能会在迭代中使用它。我需要建议关于任何可以使用的API或其他更快速执行任务的方法。任何建议都可以接受。
这种东西通常使用 Lucene 实现,特别是如果您将要反复重启应用程序或没有大量内存。Lucene 还支持 许多其他好东西。然而,如果您想要“自己编写”代码,并且有足够的内存(可能为1GB),则您的应用程序可以: 将文件解析为单词序列, 过滤停用词, 构建一个“反向索引”,作为 HashMap<String,List<Integer>>,其中String值是唯一的单词,List<Integer>对象给出文件中单词出现的偏移量。 处理那么大的文件可能需要几秒钟(或几分钟)。但是一旦创建了内存中的反向索引,您就可以非常快速地进行出现搜索。(每次搜索可能小于微秒。)