使用Aho-Corasick,可以在构建初始树之后添加字符串吗?

时间:2015-03-04 15:53:29

标签: string algorithm aho-corasick

我想在大量文档中搜索字符串。我有一个预定义的字符串列表,我希望在每个文档中找到它们。每个文档在开头都包含一个标题,后跟文本,标题中包含我想在标题下方的文本中搜索的其他字符串。

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

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

1 个答案:

答案 0 :(得分:2)

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

希望这有帮助!

相关问题