在非常大的文本上搜索许多字符串

时间:2014-02-18 06:21:31

标签: c++ string search trie large-text

我有200万个字符串,我需要在1 TB文本数据上搜索每个字符串。搜索所有这些并不是最佳解决方案,因此我在考虑为所有字符串创建数据结构(如trie)的更好方法。换句话说,一个trie,其中每个节点都是一个单词。我想问一下,为此目的,是否有任何好的算法,数据结构或库(在C ++中)?


让我在这个问题研究员中更具描述性,

例如,我有这些字符串: s1-“我爱你” s2-“你好吗” s3-“怎么了老兄”

我有很多文字数据,如: t1-“嗨,我的名字是奥米德,我喜欢电脑。你们好吗?” t2-“你的每一个愿望都会完成,他们告诉我......” T3 T4 。 。 。 T10000

然后我想考虑每个文本并搜索它们上的每个字符串。最后,对于这个例子,我只想说:t1包含s1而没有别的。 我正在寻找一种有效的方法来搜索字符串,但每次都不是愚蠢的。

2 个答案:

答案 0 :(得分:1)

我很遗憾发布仅限链接的答案,但如果您不介意阅读研究论文,那么字符串匹配算法的最终参考资料似乎是http://www-igm.univ-mlv.fr/~lecroq/string/和以下research paper通过Simone Faro和Thierry Lecroq,他们比较了85种不同字符串匹配算法的相对性能。我很确定有一个适合你的需要。

答案 1 :(得分:0)

我强烈建议你使用CLucene(http://clucene.sourceforge.net/),它是Apache Lucene项目的一个端口。这将为您构建一个倒排索引,并使文本搜索速度非常快。如果更改语言是一种选择,请考虑在Java中执行此操作,因为CLucene版本有点过时了。它会更慢但功能更多。