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

Unified Diff: chrome/browser/history/in_memory_url_index.h

Issue 8526010: Improve Autocomplete Matches and Handling of Large Results Sets (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/history/in_memory_url_index.h
===================================================================
--- chrome/browser/history/in_memory_url_index.h (revision 110116)
+++ chrome/browser/history/in_memory_url_index.h (working copy)
@@ -92,19 +92,22 @@
// directory.
bool SaveToCacheFile();
- // Given a vector containing one or more words as string16s, scans the
- // history index and return a vector with all scored, matching history items.
- // Each term must occur somewhere in the history item's URL or page title for
- // the item to qualify; however, the terms do not necessarily have to be
- // adjacent. Results are sorted with higher scoring items first. Each term
- // from |terms| may contain punctuation but should not contain spaces.
- // A search request which results in more than |kItemsToScoreLimit| total
- // candidate items returns no matches (though the results set will be
- // retained and used for subsequent calls to this function) as the scoring
- // of such a large number of candidates may cause perceptible typing response
- // delays in the omnibox. This is likely to occur for short omnibox terms
- // such as 'h' and 'w' which will be found in nearly all history candidates.
- ScoredHistoryMatches HistoryItemsForTerms(const String16Vector& terms);
+ // Given a string16 in |term_string|, scans the history index and return a
Peter Kasting 2011/11/21 20:31:02 Nit: return -> returns
mrossetti 2011/11/21 21:38:25 Done.
+ // vector with all scored, matching history items. The |term_string| is
+ // broken down into individual terms (words), each of which must occur in the
+ // candidate history item's URL or page title for the item to qualify;
+ // however, the terms do not necessarily have to be adjacent. Once we have
+ // a set of candidates, they are filtered to insure that all |term_string|
+ // terms, as separated by whitespace, occur withint the candidate's URL
Peter Kasting 2011/11/21 20:31:02 Nit: withint -> within
mrossetti 2011/11/21 21:38:25 Done.
+ // or page title. Scores are then calculated on no more than
+ // |kItemsToScoreLimit| candidates (as the scoring of such a large number of
Peter Kasting 2011/11/21 20:31:02 Nit: instead of using parens, just add a comma bef
mrossetti 2011/11/21 21:38:25 Done.
+ // candidates may cause perceptible typing response delays in the omnibox.
+ // This is likely to occur for short omnibox terms such as 'h' and 'w' which
+ // will be found in nearly all history candidates.) Results are sorted by
+ // descending score. The full results set (i.e. beyond the
+ // |kItemsToScoreLimit| limit) will be retained and used for subsequent calls
+ // to this function.
+ ScoredHistoryMatches HistoryItemsForTerms(const string16& term_string);
// Updates or adds an history item to the index if it meets the minimum
// 'quick' criteria.
@@ -121,7 +124,7 @@
FRIEND_TEST_ALL_PREFIXES(LimitedInMemoryURLIndexTest, Initialization);
FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, CacheFilePath);
FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, CacheSaveRestore);
- FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, Char16Utilities);
+ FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, HugeResultSet);
FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, NonUniqueTermCharacterSets);
FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, Scoring);
FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, StaticFunctions);
@@ -186,6 +189,20 @@
const String16Vector& lower_terms_;
};
+ // A helper predicate class used to filter excess history items when the
+ // candidate results set is too large.
+ class HistoryItemFactorGreater : public std::binary_function<HistoryID,
Peter Kasting 2011/11/21 20:31:02 Nit: Probably slightly more readable to linebreak
mrossetti 2011/11/21 21:38:25 Done.
+ HistoryID,
+ void> {
+ public:
+ explicit HistoryItemFactorGreater(const HistoryInfoMap& history_info_map);
+ ~HistoryItemFactorGreater();
+
+ bool operator()(const HistoryID h1, const HistoryID h2);
+ private:
Peter Kasting 2011/11/21 20:31:02 Nit: Blank line above this
mrossetti 2011/11/21 21:38:25 Done.
+ const history::HistoryInfoMap& history_info_map_;
+ };
+
// Initializes all index data members in preparation for restoring the index
// from the cache or a complete rebuild from the history database.
void ClearPrivateData();
@@ -223,8 +240,8 @@
void ResetSearchTermCache();
// Composes a set of history item IDs by intersecting the set for each word
- // in |uni_string|.
- HistoryIDSet HistoryIDSetFromWords(const string16& uni_string);
+ // in |unsorted_words|.
+ HistoryIDSet HistoryIDSetFromWords(const String16Vector& unsorted_words);
// Helper function to HistoryIDSetFromWords which composes a set of history
// ids for the given term given in |term|.
@@ -308,6 +325,12 @@
// http://crbug.com/83659
bool cached_at_shutdown_;
+ // Used for unit testing only. Records the number of candidate history items
+ // at three stages in the index searching process.
+ size_t pre_filter_item_count; // After word index is queried.
+ size_t post_filter_item_count; // After trimming large result set.
+ size_t post_scoring_item_count; // After performing final filter and scoring.
+
DISALLOW_COPY_AND_ASSIGN(InMemoryURLIndex);
};

Powered by Google App Engine
This is Rietveld 408576698