これはかなり古典的な文字列検索/文字列マッチングの問題です。まず、いくつかの用語について説明します。文字列マッチング アルゴリズムは通常、検索スペースを「テキスト」と呼びます。この場合は、ツイートまたはツイートです。そして「パターン」 - あなたの検索用語。
ほとんどの文字列照合アルゴリズムの複雑さは、テキストの長さ、パターンの長さ、および一致の数で測定されます。
もちろん、単純なアプローチは、ネストされたループと線形検索です。擬似コード:
foreach text (tweet)
foreach pattern (search term)
linear search the text for the pattern
これは O(t * p) です。ここで、t はすべてのテキストの合計の長さであり、p はすべてのパターンの合計の長さです。特にテキストまたはパターンのいずれかが複数回の実行で修正され、効率的な検索のための前処理を行うことができる場合は、おそらくこれを大幅に改善できます。いくつかの可能性については、ウィキペディアの文字列検索アルゴリズムの説明を参照してください。
特定のアルゴリズムの選択は、おそらくメモリの制約と、前処理時間と実行時の複雑さの間のトレードオフに依存します。しかし、私は見ていくつかのものを捨てます. あなたのパターンはおそらく固定されており、テキストが異なる可能性があるようです (別の Twitter フィードを検索していますか?)。そのため、Aho-Corasick アルゴリズムを確認することをお勧めします。サフィックス ツリーも有用なデータ構造であることがわかるかもしれません。これらのウィキペディアのページからのリンクと、それらの用語の Google 検索は、開始するのに役立つはずです (実装されたコードが役立つかもしれませんが、私は JavaScript を使用していないため、そこで何を推奨すればよいかわかりません)。