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

Side by Side Diff: chrome/browser/history/in_memory_url_index.cc

Issue 7040009: Improve HQP Title Scoring (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 7 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/history/in_memory_url_index.h" 5 #include "chrome/browser/history/in_memory_url_index.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <iterator> 9 #include <iterator>
10 #include <limits> 10 #include <limits>
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 match.can_inline = 741 match.can_inline =
742 match.url_matches.size() == 1 && match.url_matches[0].offset == 0; 742 match.url_matches.size() == 1 && match.url_matches[0].offset == 0;
743 743
744 // Get partial scores based on term matching. Note that the score for 744 // Get partial scores based on term matching. Note that the score for
745 // each of the URL and title are adjusted by the fraction of the 745 // each of the URL and title are adjusted by the fraction of the
746 // terms appearing in each. 746 // terms appearing in each.
747 int url_score = ScoreComponentForMatches(match.url_matches, url.size()) * 747 int url_score = ScoreComponentForMatches(match.url_matches, url.size()) *
748 match.url_matches.size() / terms.size(); 748 match.url_matches.size() / terms.size();
749 int title_score = 749 int title_score =
750 ScoreComponentForMatches(match.title_matches, title.size()) * 750 ScoreComponentForMatches(match.title_matches, title.size()) *
751 static_cast<int>(match.title_matches.size()) / 751 match.title_matches.size() / terms.size();
752 static_cast<int>(terms.size());
753 // Arbitrarily pick the best. 752 // Arbitrarily pick the best.
754 // TODO(mrossetti): It might make sense that a term which appears in both the 753 // TODO(mrossetti): It might make sense that a term which appears in both the
755 // URL and the Title should boost the score a bit. 754 // URL and the Title should boost the score a bit.
756 int term_score = std::max(url_score, title_score); 755 int term_score = std::max(url_score, title_score);
757 if (term_score == 0) 756 if (term_score == 0)
758 return match; 757 return match;
759 758
760 // Determine scoring factors for the recency of visit, visit count and typed 759 // Determine scoring factors for the recency of visit, visit count and typed
761 // count attributes of the URLRow. 760 // count attributes of the URLRow.
762 const int kDaysAgoLevel[] = { 0, 10, 20, 30 }; 761 const int kDaysAgoLevel[] = { 0, 10, 20, 30 };
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 const int kStartMaxValue = 250; 820 const int kStartMaxValue = 250;
822 int start_value = (kMaxSignificantStart - 821 int start_value = (kMaxSignificantStart -
823 std::min(kMaxSignificantStart, matches[0].offset)) * kStartMaxValue / 822 std::min(kMaxSignificantStart, matches[0].offset)) * kStartMaxValue /
824 kMaxSignificantStart; 823 kMaxSignificantStart;
825 824
826 // Score component for how much of the matched string the input terms cover. 825 // Score component for how much of the matched string the input terms cover.
827 // kCompleteMaxValue points times the fraction of the URL/page title string 826 // kCompleteMaxValue points times the fraction of the URL/page title string
828 // that was matched. 827 // that was matched.
829 size_t term_length_total = std::accumulate(matches.begin(), matches.end(), 828 size_t term_length_total = std::accumulate(matches.begin(), matches.end(),
830 0, AccumulateMatchLength); 829 0, AccumulateMatchLength);
830 const size_t kMaxSignificantLength = 50;
831 size_t max_significant_length =
832 std::min(max_length, std::max(term_length_total, kMaxSignificantLength));
831 const int kCompleteMaxValue = 500; 833 const int kCompleteMaxValue = 500;
832 int complete_value = term_length_total * kCompleteMaxValue / max_length; 834 int complete_value =
835 term_length_total * kCompleteMaxValue / max_significant_length;
833 836
834 int raw_score = order_value + start_value + complete_value; 837 int raw_score = order_value + start_value + complete_value;
835 const int kTermScoreLevel[] = { 1000, 650, 500, 200 }; 838 const int kTermScoreLevel[] = { 1000, 650, 500, 200 };
836 839
837 // Scale the sum of the three components above into a single score component 840 // Scale the sum of the three components above into a single score component
838 // on the same scale as that used in ScoredMatchForURL(). 841 // on the same scale as that used in ScoredMatchForURL().
839 return ScoreForValue(raw_score, kTermScoreLevel); 842 return ScoreForValue(raw_score, kTermScoreLevel);
840 } 843 }
841 844
842 InMemoryURLIndex::AddHistoryMatch::AddHistoryMatch( 845 InMemoryURLIndex::AddHistoryMatch::AddHistoryMatch(
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 if (iter->has_title()) { 1083 if (iter->has_title()) {
1081 string16 title(UTF8ToUTF16(iter->title())); 1084 string16 title(UTF8ToUTF16(iter->title()));
1082 url_row.set_title(title); 1085 url_row.set_title(title);
1083 } 1086 }
1084 history_info_map_[history_id] = url_row; 1087 history_info_map_[history_id] = url_row;
1085 } 1088 }
1086 return true; 1089 return true;
1087 } 1090 }
1088 1091
1089 } // namespace history 1092 } // namespace history
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