Chromium Code Reviews| Index: components/omnibox/browser/omnibox_field_trial.cc |
| diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc |
| index 75527959f1ab1eecb51c8ce7293ebc8eeed92dac..b33e00b6f7b379c484359c9f14f33c4d8f573e3e 100644 |
| --- a/components/omnibox/browser/omnibox_field_trial.cc |
| +++ b/components/omnibox/browser/omnibox_field_trial.cc |
| @@ -45,10 +45,30 @@ std::string DynamicFieldTrialName(int id) { |
| return base::StringPrintf("%s%d", kAutocompleteDynamicFieldTrialPrefix, id); |
| } |
| +void InitializeBucketsFromString(const std::string& bucket_string, |
| + ScoreBuckets* score_buckets) { |
| + // Clear the buckets. |
| + score_buckets->buckets().clear(); |
| + base::StringPairs kv_pairs; |
| + if (base::SplitStringIntoKeyValuePairs(bucket_string, ':', ',', &kv_pairs)) { |
| + for (base::StringPairs::const_iterator it = kv_pairs.begin(); |
| + it != kv_pairs.end(); ++it) { |
| + ScoreBuckets::CountMaxRelevance bucket; |
| + base::StringToDouble(it->first, &bucket.first); |
| + base::StringToInt(it->second, &bucket.second); |
| + score_buckets->buckets().push_back(bucket); |
| + } |
| + std::sort(score_buckets->buckets().begin(), |
| + score_buckets->buckets().end(), |
| + std::greater<ScoreBuckets::CountMaxRelevance>()); |
| + } |
| +} |
| + |
| void InitializeScoreBuckets(const VariationParams& params, |
| const char* relevance_cap_param, |
| const char* half_life_param, |
| const char* score_buckets_param, |
| + const char* use_decay_factor_param, |
| ScoreBuckets* score_buckets) { |
| VariationParams::const_iterator it = params.find(relevance_cap_param); |
| if (it != params.end()) { |
| @@ -57,6 +77,13 @@ void InitializeScoreBuckets(const VariationParams& params, |
| score_buckets->set_relevance_cap(relevance_cap); |
| } |
| + it = params.find(use_decay_factor_param); |
| + if (it != params.end()) { |
| + int use_decay_factor; |
| + if (base::StringToInt(it->second, &use_decay_factor)) |
| + score_buckets->set_use_decay_factor(use_decay_factor != 0); |
| + } |
| + |
| it = params.find(half_life_param); |
| if (it != params.end()) { |
| int half_life_days; |
| @@ -67,20 +94,8 @@ void InitializeScoreBuckets(const VariationParams& params, |
| it = params.find(score_buckets_param); |
| if (it != params.end()) { |
| // The value of the score bucket is a comma-separated list of |
| - // {DecayedCount + ":" + MaxRelevance}. |
| - base::StringPairs kv_pairs; |
| - if (base::SplitStringIntoKeyValuePairs(it->second, ':', ',', &kv_pairs)) { |
| - for (base::StringPairs::const_iterator it = kv_pairs.begin(); |
| - it != kv_pairs.end(); ++it) { |
| - ScoreBuckets::CountMaxRelevance bucket; |
| - base::StringToDouble(it->first, &bucket.first); |
| - base::StringToInt(it->second, &bucket.second); |
| - score_buckets->buckets().push_back(bucket); |
| - } |
| - std::sort(score_buckets->buckets().begin(), |
| - score_buckets->buckets().end(), |
| - std::greater<ScoreBuckets::CountMaxRelevance>()); |
| - } |
| + // {DecayedCount/DecayedFactor + ":" + MaxRelevance}. |
| + InitializeBucketsFromString(it->second, score_buckets); |
| } |
| } |
| @@ -262,6 +277,31 @@ void OmniboxFieldTrial::GetDemotionsByType( |
| } |
| } |
| +void OmniboxFieldTrial::GetDefaultHUPScoringParams( |
| + HUPScoringParams* scoring_params) { |
| + ScoreBuckets* type_score_buckets = &scoring_params->typed_count_buckets; |
| + type_score_buckets->set_half_life_days(30); |
| + type_score_buckets->set_use_decay_factor(false); |
| + // Default typed count buckets based on decayed typed count. The |
| + // values here are based on the results of field trials to determine what |
| + // maximized overall result quality. |
|
Peter Kasting
2015/08/27 20:29:31
This is true, right? That these numbers are the o
Ashok vardhan
2015/08/27 21:18:15
Ho yes.. more details in the bug.!! Result of vari
|
| + const std::string& typed_count_score_buckets_str = |
| + "1.0:1413,0.97:1390,0.93:1360,0.85:1340,0.72:1320,0.50:1250,0.0:1203"; |
| + InitializeBucketsFromString(typed_count_score_buckets_str, |
| + type_score_buckets); |
| + |
| + ScoreBuckets* visit_score_buckets = &scoring_params->visited_count_buckets; |
| + visit_score_buckets->set_half_life_days(30); |
| + visit_score_buckets->set_use_decay_factor(false); |
| + // Default visit count buckets based on decayed visit count. Values are based |
| + // on field trails to maximize overall result quality. |
| + // High number of visits - 790, at least 1 in 30 days - 590 otherwise give 100 |
| + // (which practically means to drop the urls on to floor). |
|
Peter Kasting
2015/08/27 20:29:31
Nit: How about:
Buckets based on visit count. Li
Ashok vardhan
2015/08/27 21:18:15
Done.
|
| + const std::string& visit_count_score_buckets_str = "4.0:790,0.5:590,0.0:100"; |
| + InitializeBucketsFromString(visit_count_score_buckets_str, |
| + visit_score_buckets); |
| +} |
| + |
| void OmniboxFieldTrial::GetExperimentalHUPScoringParams( |
| HUPScoringParams* scoring_params) { |
| scoring_params->experimental_scoring_enabled = false; |
| @@ -281,10 +321,12 @@ void OmniboxFieldTrial::GetExperimentalHUPScoringParams( |
| InitializeScoreBuckets(params, kHUPNewScoringTypedCountRelevanceCapParam, |
| kHUPNewScoringTypedCountHalfLifeTimeParam, |
| kHUPNewScoringTypedCountScoreBucketsParam, |
| + kHUPNewScoringTypedCountUseDecayFactorParam, |
| &scoring_params->typed_count_buckets); |
| InitializeScoreBuckets(params, kHUPNewScoringVisitedCountRelevanceCapParam, |
| kHUPNewScoringVisitedCountHalfLifeTimeParam, |
| kHUPNewScoringVisitedCountScoreBucketsParam, |
| + kHUPNewScoringVisitedCountUseDecayFactorParam, |
| &scoring_params->visited_count_buckets); |
| } |
| @@ -435,12 +477,16 @@ const char OmniboxFieldTrial::kHUPNewScoringTypedCountHalfLifeTimeParam[] = |
| "TypedCountHalfLifeTime"; |
| const char OmniboxFieldTrial::kHUPNewScoringTypedCountScoreBucketsParam[] = |
| "TypedCountScoreBuckets"; |
| +const char OmniboxFieldTrial::kHUPNewScoringTypedCountUseDecayFactorParam[] = |
| + "TypedCountUseDecayFactor"; |
| const char OmniboxFieldTrial::kHUPNewScoringVisitedCountRelevanceCapParam[] = |
| "VisitedCountRelevanceCap"; |
| const char OmniboxFieldTrial::kHUPNewScoringVisitedCountHalfLifeTimeParam[] = |
| "VisitedCountHalfLifeTime"; |
| const char OmniboxFieldTrial::kHUPNewScoringVisitedCountScoreBucketsParam[] = |
| "VisitedCountScoreBuckets"; |
| +const char OmniboxFieldTrial::kHUPNewScoringVisitedCountUseDecayFactorParam[] = |
| + "VisitedCountUseDecayFactor"; |
| const char OmniboxFieldTrial::kHQPExperimentalScoringEnabledParam[] = |
| "HQPExperimentalScoringEnabled"; |