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
を見つけて、service
service_map
service->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を前処理するための最良の方法と、そのような検索を実装する方法は何ですか?