这是一个非常经典的字符串搜索/字符串匹配问题。首先,一些术语:字符串匹配算法通常将搜索空间称为“文本”——在这种情况下,是您的一条或多条推文;和“模式” - 您的搜索词。
大多数字符串匹配算法的复杂性是根据文本的长度、模式的长度和匹配的数量来衡量的。
天真的方法当然是嵌套循环和线性搜索。伪代码:
foreach text (tweet)
foreach pattern (search term)
linear search the text for the pattern
这是 O(t * p),其中 t 是所有文本的总长度,p 是所有模式的总长度。您可能会在这方面有很大的改进,特别是如果文本或模式在多次运行中是固定的,允许您进行一些预处理以进行有效搜索。查看Wikipedia 对字符串搜索算法的描述,了解一些可能性。
您对特定算法的选择可能取决于您的内存限制以及预处理时间和运行时复杂性之间的权衡。但我会抛出一些东西来看看。听起来您的模式可能是固定的,并且您的文本可能会有所不同(搜索不同的 twitter 提要?),因此您可能需要查看Aho-Corasick 算法。您可能会发现后缀树也是一种有用的数据结构。来自这些 Wikipedia 页面的链接以及对这些术语的 Google 搜索应该可以帮助您入门(您甚至可能会找到已实现的代码来提供帮助,尽管我不使用 JavaScript,所以我不知道在那里推荐什么)。