1 /////////////////////////////////////////////////////////////////////////////
2 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
5 /////////////////////////////////////////////////////////////////////////////
6 
7 #ifndef BOOLEANCLAUSE_H
8 #define BOOLEANCLAUSE_H
9 
10 #include "LuceneObject.h"
11 
12 namespace Lucene {
13 
14 /// A clause in a BooleanQuery.
15 class LPPAPI BooleanClause : public LuceneObject {
16 public:
17     /// Specifies how clauses are to occur in matching documents.
18     enum Occur {
19         /// Use this operator for clauses that must appear in the matching documents.
20         MUST,
21 
22         /// Use this operator for clauses that should appear in the matching documents.  For a BooleanQuery
23         /// with no MUST clauses one or more SHOULD clauses must match a document for the BooleanQuery to match.
24         /// @see BooleanQuery#setMinimumNumberShouldMatch
25         SHOULD,
26 
27         /// Use this operator for clauses that must not appear in the matching documents.  Note that it is not
28         /// possible to search for queries that only consist of a MUST_NOT clause.
29         MUST_NOT
30     };
31 
32 public:
33     BooleanClause(const QueryPtr& query, Occur occur);
34     virtual ~BooleanClause();
35 
36     LUCENE_CLASS(BooleanClause);
37 
38 protected:
39     /// The query whose matching documents are combined by the boolean query.
40     QueryPtr query;
41     Occur occur;
42 
43 public:
44     Occur getOccur();
45     void setOccur(Occur occur);
46 
47     QueryPtr getQuery();
48     void setQuery(const QueryPtr& query);
49 
50     bool isProhibited();
51     bool isRequired();
52 
53     virtual bool equals(const LuceneObjectPtr& other);
54     virtual int32_t hashCode();
55     virtual String toString();
56 };
57 
58 }
59 
60 #endif
61