【发布时间】:2020-10-17 06:11:00
【问题描述】:
我有一个包含不同单词和信息的词汇表。它的大小约为 100MB。但是,搜索此文件需要很长时间。有什么方法可以提高我查找数据的速度吗?例如,我正在考虑编写一个程序,将文本文件拆分为 26 个不同的文本文件(按单词的第一个字母),然后,该程序只需要检查给定单词的第一个字母,就会有要搜索的文件要小得多。这会改善程序的执行时间吗?是否有任何有效的数据结构可以存储文件?比如json。另外,数据库呢?我正在使用 Kotlin/Java。
编辑:到目前为止,我只是蛮力搜索了整个文件,直到找到匹配项。但是,正如我所说,该文件大于 100MB。该程序的执行时间大约为 5 秒,并且只搜索一个单词。将来,我希望程序能够以毫秒为单位轻松搜索 100 个单词,这是最佳的。像 Word 这样的文本编辑器在其词汇表中搜索单词。
【问题讨论】:
-
"这会提高程序的执行时间吗?"找出答案的一个好方法是实际编写程序并对其进行测试。
-
到目前为止您尝试过什么?没有银弹。这取决于您的要求。
-
@FedericoklezCulloca 是的,我知道,但是如果我错过了更好的解决方案,那将毫无意义。例如,也许将 word 文本文件拆分为 26*26 个不同的文本文件(按前两个字母)。我想我不是唯一一个想过这个机制的人,所以我可能只是在寻找这个机制的名称,或者寻找一个更有效的名称。
-
我不确定您尝试了什么,但是将整个文件加载到 RAM 中并在其中搜索一个单词应该不会花费太多时间,因此很难提出更好的解决方案如果我们不知道你做了什么,你做了什么。
-
另外,当然,数据库可能会有所帮助。
标签: java database kotlin search vocabulary