我正在寻找一种在to级的数据中搜索匹配正则表达式的模式的方法。该实现确实需要支持正则表达式的许多更好的功能,例如行数据的开始和结束、完整的TR1支持(最好支持POSIX和/或PCRE )等等。我们正在有效地使用此应用程序来测试有关潜在敏感信息存储的策略。
我研究过索引解决方案,但大多数商业套件似乎没有我们想要的更好的正则表达式功能(到目前为止,它们都完全无法解析我们正在使用的复杂正则表达式)。
这是一个复杂的问题,因为我们拥有大量的数据,以及我们必须专门用于扫描任务的系统资源(不是很多,它只是检查策略合规性,所以没有太多的预算用于硬件)。
我查看了Lucene,但我对使用不能完全处理regex电池的索引系统有些犹豫,虽然搜索整个数据集可以解决这个问题,但我们必须让服务器至少在几周内执行这些操作。
有什么建议吗?
发布于 2009-11-26 03:44:27
PowerGREP可以处理任何正则表达式,并且正是为此目的而设计的。我发现它在大量数据中的搜索速度非常快,但我还没有尝试过to级的搜索。但因为有30天的试用期,所以值得一试。
当涉及到搜索文件的特定部分时,它特别强大。您可以根据自己的标准对文件进行分区,然后仅对这些分区应用另一次搜索。此外,它还具有非常好的报告功能。
发布于 2009-11-26 02:29:25
你可能想看看Apache Hadoop。像Yahoo和Facebook这样的大型网站使用Hadoop做很多事情,其中之一就是处理数TB的文本日志。
在Hadoop文档中,有一个分布式Grep的示例,它可以进行扩展以处理任何可并发的数据集大小。
如果您想使用自己的解决方案,Hadoop API中也有一个SequenceFileInputFilter.RegexFilter。
发布于 2009-11-26 04:03:15
我只能提供一个高层次的答案。在Tim和shadit的答案的基础上,使用在EC2或Azure Compute上实现为MapReduce算法的两遍方法。在每一遍中,映射可以获取带有标识符的数据块,如果找到匹配,则将标识符返回给Reduce,否则返回空值。将其扩展到您需要的范围,以缩短处理时间。
https://stackoverflow.com/questions/1798913
复制相似问题