模式搜索如何更快?

Kam*_*ire 9 java regex

我正在研究大约1GB的增量文件,我想搜索特定的模式.目前我正在使用Java正则表达式,你知道我怎么能更快地做到这一点?

Pet*_*ans 8

听起来像Apache Lucene的工作.

您可能不得不重新考虑您的搜索策略,但是这个库是为了做这样的事情并逐步添加索引.

它的工作原理是构建数据的反向索引(Lucene用语中的文档),然后快速检查反向索引中哪些文档具有模式的一部分.

您可以使用文档索引存储元数据,这样您就不必在大多数用例中查阅大文件.


Nic*_*uet 7

基本上你需要的是一个可以处理流的状态机.这个流被绑定到文件...每次文件增长时,你会读取附加到它上面的内容(就像tail linux命令一样,它将添加到文件中的行附加到标准输出).

如果需要停止/重新启动分析仪,可以将其存储在起始位置的某个位置(可能取决于模式匹配所需的窗口)并从中重新启动.或者您可以从头开始重启.

这是问题的"增加文件"部分.

对于处理内容的最佳方式,它取决于您真正需要的内容,您想要应用的数据和模式类型.正则表达式可能是最佳解决方案:灵活,快速且相对方便.

根据我的理解,如果你想对一些自然语言内容进行文档搜索匹配,Lucene会很好.如果将所有日期或所有行与特定属性匹配,这将是一个糟糕的选择.还因为Lucene首先制作了文档的索引......这对于真正繁重的处理只会有所帮助,因为索引首先需要时间.