Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Side by Side Diff: ui/app_list/search/mixer.cc

Issue 796293002: App list voice searches now prioritize exact-match web results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/app_list/search/mixer.h ('k') | ui/app_list/search/mixer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/app_list/search/mixer.h" 5 #include "ui/app_list/search/mixer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 // Used to group relevant providers together fox mixing their results. 51 // Used to group relevant providers together fox mixing their results.
52 class Mixer::Group { 52 class Mixer::Group {
53 public: 53 public:
54 Group(size_t max_results, double boost) 54 Group(size_t max_results, double boost)
55 : max_results_(max_results), boost_(boost) {} 55 : max_results_(max_results), boost_(boost) {}
56 ~Group() {} 56 ~Group() {}
57 57
58 void AddProvider(SearchProvider* provider) { providers_.push_back(provider); } 58 void AddProvider(SearchProvider* provider) { providers_.push_back(provider); }
59 59
60 void FetchResults(const KnownResults& known_results) { 60 void FetchResults(bool is_voice_query, const KnownResults& known_results) {
61 results_.clear(); 61 results_.clear();
62 62
63 for (Providers::const_iterator provider_it = providers_.begin(); 63 for (Providers::const_iterator provider_it = providers_.begin();
64 provider_it != providers_.end(); 64 provider_it != providers_.end();
65 ++provider_it) { 65 ++provider_it) {
66 for (SearchProvider::Results::const_iterator result_it = 66 for (SearchProvider::Results::const_iterator result_it =
67 (*provider_it)->results().begin(); 67 (*provider_it)->results().begin();
68 result_it != (*provider_it)->results().end(); 68 result_it != (*provider_it)->results().end();
69 ++result_it) { 69 ++result_it) {
70 DCHECK_GE((*result_it)->relevance(), 0.0); 70 DCHECK_GE((*result_it)->relevance(), 0.0);
(...skipping 16 matching lines...) Expand all
87 break; 87 break;
88 case PREFIX_SECONDARY: 88 case PREFIX_SECONDARY:
89 boost = 3.0; 89 boost = 3.0;
90 break; 90 break;
91 case UNKNOWN_RESULT: 91 case UNKNOWN_RESULT:
92 NOTREACHED() << "Unknown result in KnownResults?"; 92 NOTREACHED() << "Unknown result in KnownResults?";
93 break; 93 break;
94 } 94 }
95 } 95 }
96 96
97 // If this is a voice query, voice results receive a massive boost.
98 if (is_voice_query && (*result_it)->voice_result())
99 boost += 4.0;
100
97 results_.push_back( 101 results_.push_back(
98 SortData(*result_it, (*result_it)->relevance() + boost)); 102 SortData(*result_it, (*result_it)->relevance() + boost));
99 } 103 }
100 } 104 }
101 105
102 std::sort(results_.begin(), results_.end()); 106 std::sort(results_.begin(), results_.end());
103 if (max_results_ != kNoMaxResultsLimit && results_.size() > max_results_) 107 if (max_results_ != kNoMaxResultsLimit && results_.size() > max_results_)
104 results_.resize(max_results_); 108 results_.resize(max_results_);
105 } 109 }
106 110
(...skipping 21 matching lines...) Expand all
128 groups_[OMNIBOX_GROUP].reset(new Group(kNoMaxResultsLimit, 2.0)); 132 groups_[OMNIBOX_GROUP].reset(new Group(kNoMaxResultsLimit, 2.0));
129 groups_[WEBSTORE_GROUP].reset(new Group(kMaxWebstoreResults, 1.0)); 133 groups_[WEBSTORE_GROUP].reset(new Group(kMaxWebstoreResults, 1.0));
130 groups_[PEOPLE_GROUP].reset(new Group(kMaxPeopleResults, 0.0)); 134 groups_[PEOPLE_GROUP].reset(new Group(kMaxPeopleResults, 0.0));
131 groups_[SUGGESTIONS_GROUP].reset(new Group(kMaxSuggestionsResults, 3.0)); 135 groups_[SUGGESTIONS_GROUP].reset(new Group(kMaxSuggestionsResults, 3.0));
132 } 136 }
133 137
134 void Mixer::AddProviderToGroup(GroupId group, SearchProvider* provider) { 138 void Mixer::AddProviderToGroup(GroupId group, SearchProvider* provider) {
135 groups_[group]->AddProvider(provider); 139 groups_[group]->AddProvider(provider);
136 } 140 }
137 141
138 void Mixer::MixAndPublish(const KnownResults& known_results) { 142 void Mixer::MixAndPublish(bool is_voice_query,
139 FetchResults(known_results); 143 const KnownResults& known_results) {
144 FetchResults(is_voice_query, known_results);
140 145
141 SortedResults results; 146 SortedResults results;
142 results.reserve(kMaxResults); 147 results.reserve(kMaxResults);
143 148
144 const Group& main_group = *groups_[MAIN_GROUP]; 149 const Group& main_group = *groups_[MAIN_GROUP];
145 const Group& omnibox_group = *groups_[OMNIBOX_GROUP]; 150 const Group& omnibox_group = *groups_[OMNIBOX_GROUP];
146 const Group& webstore_group = *groups_[WEBSTORE_GROUP]; 151 const Group& webstore_group = *groups_[WEBSTORE_GROUP];
147 const Group& people_group = *groups_[PEOPLE_GROUP]; 152 const Group& people_group = *groups_[PEOPLE_GROUP];
148 const Group& suggestions_group = *groups_[SUGGESTIONS_GROUP]; 153 const Group& suggestions_group = *groups_[SUGGESTIONS_GROUP];
149 154
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 if (id_set.find(id) != id_set.end()) 245 if (id_set.find(id) != id_set.end())
241 continue; 246 continue;
242 247
243 id_set.insert(id); 248 id_set.insert(id);
244 final.push_back(*it); 249 final.push_back(*it);
245 } 250 }
246 251
247 results->swap(final); 252 results->swap(final);
248 } 253 }
249 254
250 void Mixer::FetchResults(const KnownResults& known_results) { 255 void Mixer::FetchResults(bool is_voice_query,
256 const KnownResults& known_results) {
251 for (const auto& item : groups_) 257 for (const auto& item : groups_)
252 item.second->FetchResults(known_results); 258 item.second->FetchResults(is_voice_query, known_results);
253 } 259 }
254 260
255 } // namespace app_list 261 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/search/mixer.h ('k') | ui/app_list/search/mixer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698