我在我的 PHP 项目中有这个问题要解决,其中一些关键字(从几百到几千,长度可能会有所不同)需要在大约 100-300 个字符长的字符串中进行搜索,有时长度较短,为 30-50 个字符。我可以预处理关键字以重用于搜索字符串的新实例。我是 PHP 的新手,在 PHP 库中没有找到这样做的方法。经过一番搜索,我在 Aho Corasick 算法中找到了一些不错的候选者,然后是 Sun Wu 和 Udi Manber 的改进,它似乎也被称为 agrep(或者是 agrep 的一部分):http://webglimpse。网/pubs/TR94-17.pdf
还有 Rabin Karp、Suffix Trees 等,但它们看起来不太适合,因为第一个是固定长度的关键字,而后者看起来很通用,需要做很多工作。
谁能让我知道我自己在 php 中实现 Agrep/Sun Wu-Manber 是解决这个问题的好方法吗?还有别的反馈吗?
编辑:正如我在下面的评论中提到的,有数百个或更多不同的搜索关键字,所以正则表达式无济于事。所以这种反应是没有帮助的。