map<boost::shared_ptr<service>, rules> service_mapルールがあるところがあります
struct rules
{
boost::unordered_multimap<string, string> set_of_rules_1;
boost::unordered_multimap<string, string> set_of_rules_2;
}
私のルールの場合、httpリクエストheadersとのペアargumentsです。たとえば、そのようなunordered_multimapの1つで、Accept-Language : FRとを見つけることができますAccept-Language : US。
それぞれboost::shared_ptr<service>は、から継承するクラスのインスタンスですservice class。
このサービス<->ルールのマップにサービスとルールをオンザフライで入力します(一部の共有ライブラリと一部のテキストファイルからルールを使用)。
今、私はのインスタンスを与えられていますdata
struct data
{
map<string, string> headers;
map<string, string> arguments;
}
与えられたオブジェクトごとに、最も関連性の高いものdataを見つけて、serviceservice_mapservice->inherited_method();
ここで関連するということは、ルールが与えられたデータにほとんど適合するものを意味します。たとえば、ルールが Accept-Language : FRありAccept-Language : US、データにペアが含まれている場合よりも、Accept-Language : fr-FR,ru;q=0.8,en-US;q=0.6,en;q=0.4関連性があると考えます。
より高速なソフト検索のためにservice_mapを前処理するための最良の方法と、そのような検索を実装する方法は何ですか?