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

Side by Side Diff: chrome/browser/autocomplete/history_url_provider.cc

Issue 7650023: Change scoring for history url provider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/autocomplete/history_url_provider.h" 5 #include "chrome/browser/autocomplete/history_url_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 476
477 default: 477 default:
478 return 900 + static_cast<int>(match_number); 478 return 900 + static_cast<int>(match_number);
479 } 479 }
480 } 480 }
481 481
482 // static 482 // static
483 float HistoryURLProvider::CalculateConfidence( 483 float HistoryURLProvider::CalculateConfidence(
484 const history::HistoryMatch& match, 484 const history::HistoryMatch& match,
485 const history::HistoryMatches& matches) { 485 const history::HistoryMatches& matches) {
486 // TODO(dominich): Take into account bookmarked page? 486 // Calculate a score based on typed count.
487 // TODO(dominich): See CompareHistoryMatch for more measures to include. 487 const float typed_numerator = match.url_info.typed_count();
488 // Using typed count in place of visit count as: 488 float typed_denominator = 0.0f;
489 for (history::HistoryMatches::const_iterator it = matches.begin();
490 it != matches.end(); ++it) {
491 typed_denominator += it->url_info.typed_count();
492 }
493 const float typed_score = (typed_denominator > 0.0f) ?
494 (typed_numerator / typed_denominator) : 0.0f;
495
496 // Calculate a score based on visit count
497 const float visit_numerator = match.url_info.visit_count();
498 float visit_denominator = 0.0f;
499 for (history::HistoryMatches::const_iterator it = matches.begin();
500 it != matches.end(); ++it) {
501 visit_denominator += it->url_info.visit_count();
502 }
503 const float visit_score = (visit_denominator > 0.0f) ?
504 (visit_numerator / visit_denominator) : 0.0f;
505
506 // Calculate a score based on innermost matching.
507 const float innermost_score = (match.innermost_match ? 1.0f : 0.0f);
508
509 // TODO(dominich): Add a boost for bookmarked pages?
510 // Prefer typed count to visit count as:
489 // - It's a better indicator of what the user wants to open given that they 511 // - It's a better indicator of what the user wants to open given that they
490 // are typing in the address bar (users tend to open certain URLs by typing 512 // are typing in the address bar (users tend to open certain URLs by typing
491 // and others by e.g. bookmarks, so visit_count is a good indicator of 513 // and others by e.g. bookmarks, so visit_count is a good indicator of
492 // overall interest but a bad one for specifically omnibox interest). 514 // overall interest but a bad one for specifically omnibox interest).
493 // - Since the DB query is sorted by typed_count, the results may be 515 // - Since the DB query is sorted by typed_count, the results may be
494 // effectively a random selection as far as visit_counts are concerned 516 // effectively a random selection as far as visit_counts are concerned
495 // (meaning many high-visit_count-URLs may be present in one query and 517 // (meaning many high-visit_count-URLs may be present in one query and
496 // absent in a similar one), leading to wild swings in confidence for the 518 // absent in a similar one), leading to wild swings in confidence for the
497 // same result across distinct queries. 519 // same result across distinct queries.
498 float numerator = match.url_info.typed_count(); 520 // Add a boost for innermost matches (matches after scheme or 'www.').
499 float denominator = 0.0f; 521 return (0.5f * typed_score) + (0.3f * visit_score) + (0.2f * innermost_score);
500 for (history::HistoryMatches::const_iterator it = matches.begin();
501 it != matches.end(); ++it) {
502 denominator += it->url_info.typed_count();
503 }
504 if (denominator < 1) {
505 numerator = match.url_info.visit_count();
506 for (history::HistoryMatches::const_iterator it = matches.begin();
507 it != matches.end(); ++it) {
508 denominator += it->url_info.visit_count();
509 }
510 }
511 return (denominator > 0.0f ? numerator / denominator : 0);
512 } 522 }
513 523
514 // static 524 // static
515 void HistoryURLProvider::PromoteOrCreateShorterSuggestion( 525 void HistoryURLProvider::PromoteOrCreateShorterSuggestion(
516 history::URLDatabase* db, 526 history::URLDatabase* db,
517 const HistoryURLProviderParams& params, 527 const HistoryURLProviderParams& params,
518 bool have_what_you_typed_match, 528 bool have_what_you_typed_match,
519 const AutocompleteMatch& what_you_typed_match, 529 const AutocompleteMatch& what_you_typed_match,
520 HistoryMatches* matches) { 530 HistoryMatches* matches) {
521 if (matches->empty()) 531 if (matches->empty())
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 &match.contents_class); 868 &match.contents_class);
859 } 869 }
860 match.description = info.title(); 870 match.description = info.title();
861 AutocompleteMatch::ClassifyMatchInString(params->input.text(), 871 AutocompleteMatch::ClassifyMatchInString(params->input.text(),
862 info.title(), 872 info.title(),
863 ACMatchClassification::NONE, 873 ACMatchClassification::NONE,
864 &match.description_class); 874 &match.description_class);
865 875
866 return match; 876 return match;
867 } 877 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698