- hello
Programmer's Reference Guide
| Searching |
Supported queries
Zend_Search_Lucene and Java Lucene support a powerful query language. It allows searching for individual terms, phrases, ranges of terms; using wildcards and fuzzy search; combining queries using boolean operators; and so on.
A detailed query language description can be found in the Zend_Search_Lucene component documentation.
What follows are examples of some common query types and strategies.
Example #1 Querying for a single word
Searches for the word "hello" through all document fields.
Note: Default search field
Important note! Java Lucene searches only through the "contents" field by default, but Zend_Search_Lucene searches through all fields. This behavior can be modified using the Zend_Search_Lucene::setDefaultSearchField($fieldName) method.
Example #2 Querying for multiple words
- hello dolly
Searches for two words. Both words are optional; at least one of them must be present in the result.
Example #3 Requiring words in a query
- +hello dolly
Searches for two words; "hello" is required, "dolly" is optional.
Example #4 Prohibiting words in queried documents
- +hello -dolly
Searches for two words; "hello" is required, 'dolly' is prohibited. In other words, if the document matches "hello", but contains the word "dolly", it will not be returned in the set of matches.
Example #5 Querying for phrases
- "hello dolly"
Searches for the phrase "hello dolly"; a document only matches if that exact string is present.
Example #6 Querying against specific fields
- title:"The Right Way" AND text:go
Searches for the phrase "The Right Way" within the title field and the word "go" within the text field.
Example #7 Querying against specific fields as well as the entire document
- title:"The Right Way" AND go
Searches for the phrase "The Right Way" within the title field and the word "go" word appearing in any field of the document.
Example #8 Querying against specific fields as well as the entire document (alternate)
- title:Do it right
Searches for the word "Do" within the title field and the words "it" and "right" words through all fields; any single one matching will result in a document match.
Example #9 Querying with the wildcard "?"
- te?t
Search for words matching the pattern "te?t", where "?" is any single character.
Example #10 Querying with the wildcard "*"
- test*
Search for words matching the pattern "test*", where "*" is any sequence of zero or more characters.
Example #11 Querying for an inclusive range of terms
- mod_date:[20020101 TO 20030101]
Search for the range of terms (inclusive).
Example #12 Querying for an exclusive range of terms
- title:{Aida to Carmen}
Search for the range of terms (exclusive).
Example #13 Fuzzy searches
- roam~
Fuzzy search for the word "roam".
Example #14 Boolean searches
- (framework OR library) AND php
Boolean query.
All supported queries can be constructed through Zend_Search_Lucene's query construction API. Moreover, query parsing and query constructing may be combined:
Example #15 Combining parsed and constructed queries
- $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
- $query = new Zend_Search_Lucene_Search_Query_Boolean();
- $query->addSubquery($userQuery, true /* required */);
- $query->addSubquery($constructedQuery, true /* required */);
| Searching |
