Chromium Code Reviews| 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); |
| }; |