Boolean operators allow terms to be combined through logic operators.
Lucene supports AND, "+", OR, NOT and "-" as Boolean operators.
Java Lucene requires boolean operators to be ALL CAPS.
Zend_Search_Lucene does not.
AND, OR, and NOT operators and "+", "-" defines two different styles to construct
boolean queries. Unlike Java Lucene, Zend_Search_Lucene doesn't
allow these two styles to be mixed.
If the AND/OR/NOT style is used, then an AND or OR operator must be present between all query terms. Each term may also be preceded by NOT operator. The AND operator has higher precedence than the OR operator. This differs from Java Lucene behavior.
The AND operator means that all terms in the "AND group" must match some part of the searched field(s).
To search for documents that contain "PHP framework" and "Zend Framework" use the query:
"PHP framework" AND "Zend Framework"
The OR operator divides the query into several optional terms.
To search for documents that contain "PHP framework" or "Zend Framework" use the query:
"PHP framework" OR "Zend Framework"
The NOT operator excludes documents that contain the term after NOT. But an "AND group" which contains only terms with the NOT operator gives an empty result set instead of a full set of indexed documents.
To search for documents that contain "PHP framework" but not "Zend Framework" use the query:
"PHP framework" AND NOT "Zend Framework"
The "+" or required operator stipulates that the term after the "+" symbol must match the document.
To search for documents that must contain "Zend" and may contain "Framework" use the query:
+Zend Framework
The "-" or prohibit operator excludes documents that match the term after the "-" symbol.
To search for documents that contain "PHP framework" but not "Zend Framework" use the query:
"PHP framework" -"Zend Framework"
If no operator is used, then the search behavior is defined by the "default boolean operator".
This is set to 'OR' by default.
That implies each term is optional by default. It may or may not be present within document, but documents with this term will receive a higher score.
To search for documents that requires "PHP framework" and may contain "Zend Framework" use the query:
+"PHP framework" "Zend Framework"
The default boolean operator may be set or retrieved with the
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator($operator)
and
Zend_Search_Lucene_Search_QueryParser::getDefaultOperator()
methods, respectively.
These methods operate with the
Zend_Search_Lucene_Search_QueryParser::B_AND and
Zend_Search_Lucene_Search_QueryParser::B_OR constants.




