c ++ - 搜索匹配子串的高效算法

时间:2015-12-10 03:34:58

标签: c++ algorithm full-text-search suffix-tree

示例:我有很多这样的模式:

sexy hello
sex every
sex example
...

我有这样的查询:

hello, sexygirl.

此查询将与第一个模式匹配。因为它包含性感和你好。 注意:性感和女孩没有空白。

有没有有效的方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

这可能会对你有所帮助,即使它在c中,很多概念都是相同的:

What is the fastest substring search algorithm?

首先,似乎大多数模式都包含单词“sex”,因此在查询中包含它是没有意义的。因此,您应该对查询进行标记,并删除任何停用词。这将使您进行简单的字符串比较,并且因为您的模式可能会将数据与它们配对(例如,文本响应),您可以使用散列函数来比较字符串,然后操纵与模式对应的数据。 (例如:将“Hello sexygirl”转换为[“Hello”,“sexygirl”],然后是[“Hello”],然后根据unordered_map检查,以及你想到的任何内容)

你可以看到的另一件事是Markov Chaining,它通常用于生成文本,但在这种情况下可能会有所帮助。

马尔可夫链可以do

的一个小例子