Chromium Code Reviews| Index: components/query_parser/query_parser.h |
| diff --git a/components/query_parser/query_parser.h b/components/query_parser/query_parser.h |
| index cc3f94b2cf3bc68f3353961b3bbe1c854dfa228d..8ed38e93a5d94a393fa5724a2233a03d033e08c2 100644 |
| --- a/components/query_parser/query_parser.h |
| +++ b/components/query_parser/query_parser.h |
| @@ -24,6 +24,14 @@ struct QueryWord { |
| size_t position; |
| }; |
| +enum class MatchingAlgorithm { |
| + // Only words long enough are considered for prefix search. Shorter words are |
| + // considered for exact matches. |
| + DEFAULT, |
| + // All words are considered for a prefix search. |
| + ALWAYS_PREFIX_SEARCH, |
| +}; |
| + |
| typedef std::vector<query_parser::QueryWord> QueryWordVector; |
| // QueryNode is used by QueryParser to represent the elements that constitute a |
| @@ -72,23 +80,29 @@ class QueryParser { |
| // point doing anything for them and we only adjust the minimum length |
| // to 2 for Korean Hangul while using 3 for others. This is a temporary |
| // hack until we have a segmentation support. |
| - static bool IsWordLongEnoughForPrefixSearch(const base::string16& word); |
| + static bool IsWordLongEnoughForPrefixSearch( |
| + const base::string16& word, |
| + const MatchingAlgorithm matching_algorithm); |
| // Parse a query into a SQLite query. The resulting query is placed in |
| // |sqlite_query| and the number of words is returned. |
| - int ParseQuery(const base::string16& query, base::string16* sqlite_query); |
| + int ParseQuery(const base::string16& query, |
| + const MatchingAlgorithm matching_algorithm, |
| + base::string16* sqlite_query); |
| // Parses |query|, returning the words that make up it. Any words in quotes |
| // are put in |words| without the quotes. For example, the query text |
| // "foo bar" results in two entries being added to words, one for foo and one |
| // for bar. |
| void ParseQueryWords(const base::string16& query, |
| + const MatchingAlgorithm matching_algorithm, |
| std::vector<base::string16>* words); |
| // Parses |query|, returning the nodes that constitute the valid words in the |
| // query. This is intended for later usage with DoesQueryMatch. Ownership of |
| // the nodes passes to the caller. |
| void ParseQueryNodes(const base::string16& query, |
| + const MatchingAlgorithm matching_algorithm, |
| QueryNodeStarVector* nodes); |
| // Returns true if the string text matches the query nodes created by a call |
| @@ -114,7 +128,9 @@ class QueryParser { |
| private: |
| // Does the work of parsing |query|; creates nodes in |root| as appropriate. |
| // This is invoked from both of the ParseQuery methods. |
| - bool ParseQueryImpl(const base::string16& query, QueryNodeList* root); |
| + bool ParseQueryImpl(const base::string16& query, |
| + const MatchingAlgorithm matching_algorithm, |
|
sky
2014/11/04 03:32:05
Are we really using const for these? Isn't the enu
Kibeom Kim (inactive)
2014/11/04 08:38:31
Done.
|
| + QueryNodeList* root); |
| DISALLOW_COPY_AND_ASSIGN(QueryParser); |
| }; |