我有一个包含这样的字符串的大文档,基本上是一个非分隔的字符串 - mynameisjohnsmith
我也有一个名字的集合,这可能非常大,假设有一百万条记录。我打算这样做来检查文档是否包含集合中可用的名称。一种方法是索引文档并迭代集合,并为每个条目搜索名称的索引。如果集合中没有名称(100万次迭代),这可能是非常低效的。
我想知道是否有更好的方法。像索引文档和名称以及查找交集的东西。 谢谢。
答案 0 :(得分:0)
Aho-Corasick字符串搜索算法使用有限状态机在文档中同时搜索大量字符串。算法的复杂性在字符串的长度加上搜索文本的长度加上输出匹配的数量是线性的。病毒扫描软件能够在合理的时间内有效地搜索文件中的大量病毒签名。