我正在编写一种算法,在某些阶段必须使用正则表达式搜索数百万个字符串。
通常我使用像Mongo或SQL这样的索引数据库来搜索大量数据,但这次我只限于文本文件或哈希/数组。
我想知道是否存在组织搜索此类数据的有效方法,可能类似于数据库中的索引。截至目前,我的想法是将数据拆分成许多单独的文本文件(基于字符串长度等),但也许有更好的方法。
答案 0 :(得分:3)
一些想法:
read
或readlines
或使用任何形式的“sl”“数据的任何解决方案,因为这不是可扩展,并且比使用foreach
的逐行IO慢得多。grep
或egrep
。它们是为了做你想做的事而编写的,并且是每小时在世界各地的数百万个系统中使用的经过强化战斗的工具。将Ruby包裹起来以控制他们将要做的事情并获取结果很容易。 我在SO上有答案显示正则表达式与子字符串搜索的基准,以及对线IO的诽谤。
答案 1 :(得分:0)
你可以运行外部程序吗?我建议您将数据组织为文本文件并使用the_silver_searcher
- 它与grep类似,但是much much faster并且完全支持Perl正则表达式。