Nous avons un map<boost::shared_ptr<service>, rules> service_map
où les règles estunordered_multimap <string, string> pour mapper <string, string> soft search, Comment faire une telle chose et comment faire des cartes prétraitées pour une recherche plus rapide?
struct rules
{
boost::unordered_multimap<string, string> set_of_rules_1;
boost::unordered_multimap<string, string> set_of_rules_2;
}
Dans mon cas, des règles sont des paires de la demande http headers
et arguments
, par exemple dans un tel unordered_multimap nous pourrions trouver Accept-Language : FR
et Accept-Language : US
. Chaque boost::shared_ptr<service>
est une instance de classe qui hérite de service class
.
Je remplis cette carte de servise < -> règles à la volée avec les services et les règles (à partir de certaines bibliothèques partagées et certains fichiers texte avec des règles).
Maintenant, je suis cas donné de data
struct data
{
map<string, string> headers;
map<string, string> arguments;
}
Pour chaque objet à data
Je dois trouver les plus pertinentes service
de service_map
et appeler sa service->inherited_method();
Par pertinent ici, nous entendons une dont les règles s'adapter à données données principalement. Par exemple si nous avons dans les règles Accept-Language : FR
et Accept-Language : US
que si les données contiennent la paire Accept-Language : fr-FR,ru;q=0.8,en-US;q=0.6,en;q=0.4
nous pensons qu'il est pertinent.
Quelle serait la meilleure façon de pré-traiter mon service_map pour une recherche rapide plus rapide, et comment implémenter une telle recherche?
S'agit-il seulement d'Accept-Language, ou y aura-t-il d'autres dimensions auxquelles vous essayez de faire correspondre? Moins parler des détails C++ et plus sur les concepts réels et les variations de données attendues serait très utile. –