Package com.google.gerrit.index.query
Class IndexPredicate<I>
- java.lang.Object
-
- com.google.gerrit.index.query.Predicate<T>
-
- com.google.gerrit.index.query.OperatorPredicate<I>
-
- com.google.gerrit.index.query.IndexPredicate<I>
-
- All Implemented Interfaces:
Matchable<I>
- Direct Known Subclasses:
ChangeIndexPredicate
,IntegerRangePredicate
,RegexPredicate
,TimestampRangePredicate
public abstract class IndexPredicate<I> extends OperatorPredicate<I> implements Matchable<I>
Predicate that is mapped to a field in the index.
-
-
Field Summary
-
Fields inherited from class com.google.gerrit.index.query.OperatorPredicate
name, value
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
IndexPredicate(SchemaFieldDefs.SchemaField<I,?> def, String value)
protected
IndexPredicate(SchemaFieldDefs.SchemaField<I,?> def, String name, String value)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getCost()
Returns a cost estimate to run this predicate, higher figures cost more.SchemaFieldDefs.SchemaField<I,?>
getField()
FieldType<?>
getType()
boolean
match(I doc)
This method matches documents without calling an index subsystem.-
Methods inherited from class com.google.gerrit.index.query.OperatorPredicate
copy, equals, getOperator, getValue, hashCode, toString
-
Methods inherited from class com.google.gerrit.index.query.Predicate
and, and, any, asMatchable, estimateCost, getChild, getChildCount, getChildren, getFlattenedPredicateList, getLeafCount, getPredicateString, isLeaf, isMatchable, not, or, or, supportedForQueries
-
-
-
-
Constructor Detail
-
IndexPredicate
protected IndexPredicate(SchemaFieldDefs.SchemaField<I,?> def, String value)
-
IndexPredicate
protected IndexPredicate(SchemaFieldDefs.SchemaField<I,?> def, String name, String value)
-
-
Method Detail
-
getField
public SchemaFieldDefs.SchemaField<I,?> getField()
-
getType
public FieldType<?> getType()
-
match
public boolean match(I doc)
This method matches documents without calling an index subsystem. For primitive fields (e.g. integer, long) , the matching logic is consistent across this method and all known index implementations. For text fields (i.e. prefix and full-text) the semantics vary between this implementation and known index implementations:- Prefix: Lucene as well as
match(Object)
matches terms as true prefixes (prefix:foo -> `foo bar` matches, but `baz foo bar` does not match). The index implementation at Google tokenizes both the query and the indexed text and matches tokens individually (prefix:fo ba -> `baz foo bar` matches).- Full text: Lucene uses a
PhraseQuery
to search for terms in full text fields in-order. The index implementation at Google as well asmatch(Object)
tokenizes both the query and the indexed text and matches tokens individually. - Prefix: Lucene as well as
-
-