0

Java中是否有任何内置库用于在java中搜索大约100GB的大文件中的字符串。我目前正在使用二进制搜索,但效率不高。

4

2 回答 2

0

如果您不想使用为搜索而构建的工具,则将数据存储在 DB 中并使用 sql。

于 2012-04-13T16:02:29.410 回答
0

据我所知,Java 不包含任何文件搜索引擎,无论是否有索引。这也有一个很好的理由:搜索引擎实现本质上与输入数据集搜索模式格式相关。两者的微小变化都可能导致搜索引擎发生巨大变化。

为了让我们能够提供更具体的答案,您需要:

  • 准确描述数据集:文件的数量、路径结构和平均大小,每个条目的格式和每个包含的标记的格式。

  • 准确描述您的搜索模式:那些是固定的字符串、glob 模式还是正则表达式?您希望模式匹配整行还是每行中的特定标记?

  • 准确描述您想要的搜索结果:您想要完全匹配还是近似匹配?您想在文件中获得一个位置,还是提取特定的标记?

  • 准确描述您的要求:您是否能够预先建立索引?数据集是否预计会实时修改?

  • 解释为什么不能使用专为此类工作设计的第三方库,例如 Lucene。

  • 解释为什么您当前的二分搜索(其复杂性应为O(logn))不够有效。唯一可能更快、具有恒定复杂性的方法是使用哈希表。

最好用更广泛的术语描述您的问题。例如,人们可能会从您的样本数据集中假设您拥有的是一组单词和相关的偏移量或文档标识符列表。在这样的集合中进行搜索的一种简单方法是将单词/文件位置索引存储在哈希表中,以便能够在恒定时间内访问每个关联列表。

于 2012-04-13T16:29:03.210 回答