| Index: chrome/browser/autocomplete/search_provider.cc
|
| ===================================================================
|
| --- chrome/browser/autocomplete/search_provider.cc (revision 29226)
|
| +++ chrome/browser/autocomplete/search_provider.cc (working copy)
|
| @@ -521,10 +521,11 @@
|
| // TODO(kochi): http://b/1170574 We add only one results for navigational
|
| // suggestions. If we can get more useful information about the score,
|
| // consider adding more results.
|
| - matches_.push_back(
|
| - NavigationToMatch(navigation_results.front(),
|
| - CalculateRelevanceForNavigation(0, is_keyword),
|
| - is_keyword));
|
| + const size_t num_results = is_keyword ?
|
| + keyword_navigation_results_.size() : default_navigation_results_.size();
|
| + matches_.push_back(NavigationToMatch(navigation_results.front(),
|
| + CalculateRelevanceForNavigation(num_results, 0, is_keyword),
|
| + is_keyword));
|
| }
|
| }
|
|
|
| @@ -547,7 +548,7 @@
|
| MatchMap* map) {
|
| for (size_t i = 0; i < suggest_results.size(); ++i) {
|
| AddMatchToMap(suggest_results[i],
|
| - CalculateRelevanceForSuggestion(suggest_results, i,
|
| + CalculateRelevanceForSuggestion(suggest_results.size(), i,
|
| is_keyword),
|
| AutocompleteMatch::SEARCH_SUGGEST,
|
| static_cast<int>(i), is_keyword, map);
|
| @@ -555,22 +556,21 @@
|
| }
|
|
|
| int SearchProvider::CalculateRelevanceForWhatYouTyped() const {
|
| + if (providers_.valid_keyword_provider())
|
| + return 250;
|
| +
|
| switch (input_.type()) {
|
| case AutocompleteInput::UNKNOWN:
|
| - return providers_.valid_keyword_provider() ? 250 : 1300;
|
| + case AutocompleteInput::QUERY:
|
| + case AutocompleteInput::FORCED_QUERY:
|
| + return 1300;
|
|
|
| case AutocompleteInput::REQUESTED_URL:
|
| - return providers_.valid_keyword_provider() ? 250 : 1200;
|
| + return 1150;
|
|
|
| case AutocompleteInput::URL:
|
| - return providers_.valid_keyword_provider() ? 250 : 850;
|
| + return 850;
|
|
|
| - case AutocompleteInput::QUERY:
|
| - return providers_.valid_keyword_provider() ? 250 : 1300;
|
| -
|
| - case AutocompleteInput::FORCED_QUERY:
|
| - return providers_.valid_keyword_provider() ? 250 : 1500;
|
| -
|
| default:
|
| NOTREACHED();
|
| return 0;
|
| @@ -589,73 +589,34 @@
|
| // Don't let scores go below 0. Negative relevance scores are meaningful in
|
| // a different way.
|
| int base_score;
|
| - bool is_primary = providers_.is_primary_provider(is_keyword);
|
| - switch (input_.type()) {
|
| - case AutocompleteInput::UNKNOWN:
|
| - case AutocompleteInput::REQUESTED_URL:
|
| - base_score = is_primary ? 1050 : 200;
|
| - break;
|
| -
|
| - case AutocompleteInput::URL:
|
| - base_score = is_primary ? 750 : 200;
|
| - break;
|
| -
|
| - case AutocompleteInput::QUERY:
|
| - case AutocompleteInput::FORCED_QUERY:
|
| - base_score = is_primary ? 1250 : 200;
|
| - break;
|
| -
|
| - default:
|
| - NOTREACHED();
|
| - base_score = 0;
|
| - break;
|
| - }
|
| + if (!providers_.is_primary_provider(is_keyword))
|
| + base_score = 200;
|
| + else
|
| + base_score = (input_.type() == AutocompleteInput::URL) ? 750 : 1050;
|
| return std::max(0, base_score - score_discount);
|
| }
|
|
|
| -int SearchProvider::CalculateRelevanceForSuggestion(
|
| - const SuggestResults& suggest_results,
|
| - size_t suggestion_number,
|
| - bool is_keyword) const {
|
| - DCHECK(suggestion_number < suggest_results.size());
|
| - bool is_primary = providers_.is_primary_provider(is_keyword);
|
| - const int suggestion_value =
|
| - static_cast<int>(suggest_results.size() - 1 - suggestion_number);
|
| - switch (input_.type()) {
|
| - case AutocompleteInput::UNKNOWN:
|
| - case AutocompleteInput::REQUESTED_URL:
|
| - return suggestion_value + (is_primary ? 600 : 100);
|
| -
|
| - case AutocompleteInput::URL:
|
| - return suggestion_value + (is_primary ? 300 : 100);
|
| -
|
| - case AutocompleteInput::QUERY:
|
| - case AutocompleteInput::FORCED_QUERY:
|
| - return suggestion_value + (is_primary ? 800 : 100);
|
| -
|
| - default:
|
| - NOTREACHED();
|
| - return 0;
|
| - }
|
| +int SearchProvider::CalculateRelevanceForSuggestion(size_t num_results,
|
| + size_t result_number,
|
| + bool is_keyword) const {
|
| + DCHECK(result_number < num_results);
|
| + int base_score;
|
| + if (!providers_.is_primary_provider(is_keyword))
|
| + base_score = 100;
|
| + else
|
| + base_score = (input_.type() == AutocompleteInput::URL) ? 300 : 600;
|
| + return base_score +
|
| + static_cast<int>(num_results - 1 - result_number);
|
| }
|
|
|
| -int SearchProvider::CalculateRelevanceForNavigation(
|
| - size_t suggestion_number,
|
| - bool is_keyword) const {
|
| - DCHECK(
|
| - (is_keyword && suggestion_number < keyword_navigation_results_.size()) ||
|
| - (!is_keyword && suggestion_number < default_navigation_results_.size()));
|
| +int SearchProvider::CalculateRelevanceForNavigation(size_t num_results,
|
| + size_t result_number,
|
| + bool is_keyword) const {
|
| + DCHECK(result_number < num_results);
|
| // TODO(kochi): http://b/784900 Use relevance score from the NavSuggest
|
| // server if possible.
|
| - bool is_primary = providers_.is_primary_provider(is_keyword);
|
| - switch (input_.type()) {
|
| - case AutocompleteInput::QUERY:
|
| - case AutocompleteInput::FORCED_QUERY:
|
| - return static_cast<int>(suggestion_number) + (is_primary ? 1000 : 150);
|
| -
|
| - default:
|
| - return static_cast<int>(suggestion_number) + (is_primary ? 800 : 150);
|
| - }
|
| + return (providers_.is_primary_provider(is_keyword) ? 800 : 150) +
|
| + static_cast<int>(num_results - 1 - result_number);
|
| }
|
|
|
| void SearchProvider::AddMatchToMap(const std::wstring& query_string,
|
|
|