使用Aho-Corasick,是否可以在初始树构建完成后添加字符串?

Using Aho-Corasick, can strings be added after the initial tree is built?

我想在大量文档中搜索字符串。我有一个预定义的可用字符串列表,我想在每个文档中找到它。每个文档的开头都包含一个 header,后面跟着文本,header 中是我想在 header 下方的文本中搜索的其他字符串。

在文档的每次迭代中,是否可以在从主列表创建初始树后添加 header 字符串?或者修改原始数据结构以包含新字符串?

如果这样做不切实际,是否有更合适的替代搜索方法?

如果每个文档都有自己的一组要搜索的字符串,那么您似乎可以只构建一个全局 Aho-Corasick 匹配器,然后构建第二个每个文档匹配器。然后,当您处理文档中的字符时,将每个字符都输入到两个匹配的自动机中,并报告以这种方式找到的所有匹配项。这消除了向主自动机添加新字符串并在完成后删除它们的需要。另外,减速应该是非常小的。

希望对您有所帮助!