入力文字列 (URL) を、単純なワイルドカードをサポートする文字列ルールの大規模なセット (1k から 250k の範囲) と照合する必要があります。
ワイルドカード サポートの要件は次のとおりです。
ワイルドカード (*) は、URL の「一部」のみを置き換えることができます。これは、ドメイン、パス、およびパラメーターのフラグメントです。たとえば、「*.part.part/*/part?part=part&part=*」のようになります。この規則の唯一の例外は、「/*」がスラッシュの後の任意のものと一致する必要があるパス領域です。
例:
- *.site.com/* -- sub.site.com/home.html、sub2.site.com/path/home.html と一致する必要があります
- sub.site.*/path/* -- sub.site.com/path/home.html、sub.site.net/path/home.html と一致する必要がありますが、sub.site.com/home.html とは一致しません。
追加要件:
- 高速ルックアップ (「高速」は相対的な用語であることは理解しています。最大 250k のルールを考えると、可能であれば 1.5 秒以内に収まります。 )
- 最新のデスクトップの範囲内で動作します (例: サーバーの実装ではありません)。
- 入力文字列を指定して 0:n の一致を返す機能
- マッチにはルールデータが添付されます
そのようなタスクに最適なシステム/アルゴリズムは何ですか? ルール自体を SQLite データベースに格納して、C++ でソリューションを開発します。