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.
Przykład 12. Querying for a single word
hello
Searches for the word "hello" through all document fields.
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.
Przykład 13. 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.
Przykład 14. Requiring words in a query
+hello dolly
Searches for two words; "hello" is required, "dolly" is optional.
Przykład 15. 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.
Przykład 16. Querying for phrases
"hello dolly"
Searches for the phrase "hello dolly"; a document only matches if that exact string is present.
Przykład 17. 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.
Przykład 18. 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.
Przykład 19. 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.
Przykład 20. Querying with the wildcard "?"
te?t
Search for words matching the pattern "te?t", where "?" is any single character.
Przykład 21. Querying with the wildcard "*"
test*
Search for words matching the pattern "test*", where "*" is any sequence of zero or more characters.
Przykład 22. Querying for an inclusive range of terms
mod_date:[20020101 TO 20030101]
Search for the range of terms (inclusive).
Przykład 23. Querying for an exclusive range of terms
title:{Aida to Carmen}
Search for the range of terms (exclusive).
All supported queries can be constructed through Zend_Search_Lucene
's
query
construction API. Moreover, query parsing and query constructing may be
combined:
Przykład 26. 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 */);