gpt4 book ai didi

Java:在按字母顺序排序的文本文件中查找单词的最佳方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:55 24 4
gpt4 key购买 nike

我有这个按字母顺序排序的巨大索引,我需要获取特定术语的行。逐行阅读文件并检查我是否得到了正确的术语对我来说似乎效率不高,因此索引的大小(我们索引了英语维基百科语料库)。

因此,我正在寻找一种对行进行二进制搜索的方法。我使用 LineNumberReader 来有效地获取行数,但似乎没有有效的解决方案来从文件中获取第 n 行。

我想知道是否阅读行直到我到达第 n 行,检查它是否是正确的术语并根据二进制搜索算法采取行动(可能再次阅读这些行,因为我需要我已经跳过的行)比逐行检查条款更有效吗?

也非常欢迎任何其他建议!

请注意,我需要获取一组行,具体取决于要搜索的术语集。

最佳答案

听起来您应该使用数据库 - 它们受益于多年与大型数据集的索引查询相关的精心设计,如果您自己动手,您不太可能接近它。

如果你真的想自己做,你需要创建两个单独的索引:

  • 单词索引 -> 包含该术语的行号,以便您可以快速计算包含给定搜索词的行号集
  • 行号索引 -> 在文件中的位置,以便您可以通过随机访问快速检索正确的行

此外,如果您的数据集非常大,那么这两个索引本身都可能比内存大。所以你必须实现一个基于磁盘的索引——类似于 B-Tree .到那时,您将重新发明大部分 RDBMS 轮子,并且可能会因为一开始就没有使用合适的数据库而自责。

考虑尝试 PostgreSQL - 它是开源的,非常成熟且维护良好,并且具有相当不错的文本搜索功能。

关于Java:在按字母顺序排序的文本文件中查找单词的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9560578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com