HTML ドキュメントがあり、複数 (1 ~ 10k) [現時点では 1k、後で最大 10k] のキーワードの発生に対してフィルター処理したいと考えています。
次のような検索用語を保存する、コンパイル済みの正規表現があります。
static Regex r = new Regex(@"keyword1|keyword2|keyword999",RegexOptions.Compiled | RegexOptions.IgnoreCase);
これは私のコードです:
Stopwatch sw = new Stopwatch();
sw.Start();
MatchCollection matches = Cache.r.Matches(doc.DocumentNode.InnerHtml);
string s = "";
if (matches.Count > 0)
{
foreach (Match m in matches)
{
s += m.Value + ",";
}
}
long time = sw.ElapsedMilliseconds;
Console.Write(time + " = "+matches.Count+" -> "+s );
平均所要時間は約 5 ~ 8 秒です。これは多すぎます。多くのキーワードに対して HTML ドキュメントをフィルタリングする効率的な方法はありますか? または、これをフィルタリングするためのより効率的なアルゴリズムがあるかもしれません..