在Ruby中,如何组织大量数据以实现最有效的正则表达式搜索?

在Ruby中,如何组织大量数据以实现最有效的正则表达式搜索?,ruby,regex,database,search,Ruby,Regex,Database,Search,我正在编写一个算法,在某个阶段必须使用正则表达式搜索数百万个字符串 通常我使用索引数据库(如Mongo或SQL)来搜索大量数据,但这次我仅限于文本文件或哈希/数组 我想知道是否存在一种有效的方法来组织对这些数据的搜索,也许类似于数据库中的索引。到目前为止,我的想法是将数据分割成许多单独的文本文件(基于字符串长度等),但也许有更好的方法 你能运行外部程序吗?我建议您将数据组织为文本文件并使用-它的工作原理类似于grep,但它是并完全支持Perl正则表达式。您能运行外部程序吗?我建议您将数据组织为文

我正在编写一个算法,在某个阶段必须使用正则表达式搜索数百万个字符串

通常我使用索引数据库(如Mongo或SQL)来搜索大量数据,但这次我仅限于文本文件或哈希/数组


我想知道是否存在一种有效的方法来组织对这些数据的搜索,也许类似于数据库中的索引。到目前为止,我的想法是将数据分割成许多单独的文本文件(基于字符串长度等),但也许有更好的方法

你能运行外部程序吗?我建议您将数据组织为文本文件并使用-它的工作原理类似于grep,但它是并完全支持Perl正则表达式。

您能运行外部程序吗?我建议您将数据组织为文本文件并使用-它的工作原理类似于grep,但它是并完全支持Perl正则表达式。

您能运行外部程序吗?我建议您将数据组织为文本文件并使用-它的工作原理类似于grep,但它是并完全支持Perl正则表达式。

您能运行外部程序吗?我建议您将数据组织为文本文件并使用-它的工作原理与grep类似,但它是并完全支持Perl正则表达式。

一些想法:

  • 如果数据是自由格式的文本,那么除了使用弹性搜索之类的工具并花费大量时间进行设置以理解数据之外,没有什么好的方法来组织它。如果这是一次性工作,那么这一步骤将抵消任何可能的节省。如果你必须经常这样做,这可能是一个重大的胜利 <> LI>如果选择像Ruby这样的脚本语言,不要考虑使用“代码> >读< /COD>或<代码>读取行< /代码>的任何解决方案,或者任何形式的“SLUPLE”数据,因为它是不可伸缩的,并且可以比逐行IO慢得多,使用<代码> Frace .
  • 使用Ruby读取包含数百万行的文件,而无需任何预处理,这是可能的,也是很容易的。Ruby对正则表达式的支持很好,但是编写糟糕的正则表达式会大大降低速度。检查是否可以使用子字符串搜索,因为它们是最快的,其次是锚定正则表达式,然后是未锚定正则表达式
  • 考虑从命令行使用
    grep
    egrep
    。它们是用来做你想做的事情的,并且是全世界数百万个系统上每小时用于完成这项任务的久经考验的工具。将Ruby包裹在他们周围很容易控制他们将要做什么,并获取他们的结果
我有答案,显示正则表达式与子字符串搜索的基准,以及slurping与line IO的基准。

一些想法:

  • 如果数据是自由格式的文本,那么除了使用弹性搜索之类的工具并花费大量时间进行设置以理解数据之外,没有什么好的方法来组织它。如果这是一次性工作,那么这一步骤将抵消任何可能的节省。如果你必须经常这样做,这可能是一个重大的胜利 <> LI>如果选择像Ruby这样的脚本语言,不要考虑使用“代码> >读< /COD>或<代码>读取行< /代码>的任何解决方案,或者任何形式的“SLUPLE”数据,因为它是不可伸缩的,并且可以比逐行IO慢得多,使用<代码> Frace .
  • 使用Ruby读取包含数百万行的文件,而无需任何预处理,这是可能的,也是很容易的。Ruby对正则表达式的支持很好,但是编写糟糕的正则表达式会大大降低速度。检查是否可以使用子字符串搜索,因为它们是最快的,其次是锚定正则表达式,然后是未锚定正则表达式
  • 考虑从命令行使用
    grep
    egrep
    。它们是用来做你想做的事情的,并且是全世界数百万个系统上每小时用于完成这项任务的久经考验的工具。将Ruby包裹在他们周围很容易控制他们将要做什么,并获取他们的结果
我有答案,显示正则表达式与子字符串搜索的基准,以及slurping与line IO的基准。

一些想法:

  • 如果数据是自由格式的文本,那么除了使用弹性搜索之类的工具并花费大量时间进行设置以理解数据之外,没有什么好的方法来组织它。如果这是一次性工作,那么这一步骤将抵消任何可能的节省。如果你必须经常这样做,这可能是一个重大的胜利 <> LI>如果选择像Ruby这样的脚本语言,不要考虑使用“代码> >读< /COD>或<代码>读取行< /代码>的任何解决方案,或者任何形式的“SLUPLE”数据,因为它是不可伸缩的,并且可以比逐行IO慢得多,使用<代码> Frace .
  • 使用Ruby读取包含数百万行的文件,而无需任何预处理,这是可能的,也是很容易的。Ruby对正则表达式的支持很好,但是编写糟糕的正则表达式会大大降低速度。检查是否可以使用子字符串搜索,因为它们是最快的,其次是锚定正则表达式,然后是未锚定正则表达式
  • 考虑从命令行使用
    grep
    egrep
    。它们是用来做你想做的事情的,并且是全世界数百万个系统上每小时用于完成这项任务的久经考验的工具。将Ruby包裹在他们周围很容易控制他们将要做什么,并获取他们的结果
我有答案,显示正则表达式与子字符串搜索的基准,以及slurping与line IO的基准。

一些想法:

  • 如果数据是自由格式的文本,那么除了使用弹性搜索之类的工具并花费大量时间进行设置以理解数据之外,没有什么好的方法来组织它。如果这是一次性工作,那么这一步骤将抵消任何可能的节省。如果你必须经常这样做,这可能是一个重大的胜利
  • 如果您选择使用脚本语言l来执行此操作