Class ContextQuery
- java.lang.Object
-
- org.apache.lucene.search.Query
-
- org.apache.lucene.search.suggest.document.CompletionQuery
-
- org.apache.lucene.search.suggest.document.ContextQuery
-
- All Implemented Interfaces:
Accountable
public class ContextQuery extends CompletionQuery implements Accountable
ACompletionQuery
that matches documents specified by a wrappedCompletionQuery
supporting boosting and/or filtering by specified contexts.Use this query against
ContextSuggestField
Example of using a
CompletionQuery
with boosted contexts:CompletionQuery completionQuery = ...; ContextQuery query = new ContextQuery(completionQuery); query.addContext("context1", 2); query.addContext("context2", 1);
NOTE:
- This query can be constructed with
PrefixCompletionQuery
,RegexCompletionQuery
orFuzzyCompletionQuery
query. - To suggest across all contexts, use
addAllContexts()
. When no context is added, the default behaviour is to suggest across all contexts. - To apply the same boost to multiple contexts sharing the same prefix, Use
addContext(CharSequence, float, boolean)
with the common context prefix, boost and setexact
to false. - Using this query against a
SuggestField
(not context enabled), would yield results ignoring any context filtering/boosting
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ContextQuery.ContextCompletionWeight
private static class
ContextQuery.ContextMetaData
Holder for context value meta data
-
Field Summary
Fields Modifier and Type Field Description private static long
BASE_RAM_BYTES
private java.util.Map<IntsRef,ContextQuery.ContextMetaData>
contexts
protected CompletionQuery
innerQuery
Inner completion queryprivate boolean
matchAllContexts
private long
ramBytesUsed
private IntsRefBuilder
scratch
-
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
-
Constructor Summary
Constructors Constructor Description ContextQuery(CompletionQuery query)
Constructs a context completion query that matches documents specified byquery
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAllContexts()
Add all contexts with a boost of 1fvoid
addContext(java.lang.CharSequence context)
Adds an exact context with default boost of 1void
addContext(java.lang.CharSequence context, float boost)
Adds an exact context with boostvoid
addContext(java.lang.CharSequence context, float boost, boolean exact)
Adds a context with boost, setexact
to false if the context is a prefix of any indexed contextsWeight
createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)
Expert: Constructs an appropriate Weight implementation for this query.boolean
equals(java.lang.Object o)
Override and implement query instance equivalence properly in a subclass.int
hashCode()
Override and implement query hash code properly in a subclass.long
ramBytesUsed()
Return the memory usage of this object in bytes.private static Automaton
toContextAutomaton(java.util.Map<IntsRef,ContextQuery.ContextMetaData> contexts, boolean matchAllContexts)
java.lang.String
toString(java.lang.String field)
Prints a query to a string, withfield
assumed to be the default field and omitted.private void
updateRamBytesUsed()
void
visit(QueryVisitor visitor)
Recurse through the query tree, visiting any child queries-
Methods inherited from class org.apache.lucene.search.suggest.document.CompletionQuery
getField, getFilter, getTerm, rewrite
-
Methods inherited from class org.apache.lucene.search.Query
classHash, sameClassAs, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.util.Accountable
getChildResources
-
-
-
-
Field Detail
-
BASE_RAM_BYTES
private static final long BASE_RAM_BYTES
-
scratch
private IntsRefBuilder scratch
-
contexts
private java.util.Map<IntsRef,ContextQuery.ContextMetaData> contexts
-
matchAllContexts
private boolean matchAllContexts
-
innerQuery
protected CompletionQuery innerQuery
Inner completion query
-
ramBytesUsed
private long ramBytesUsed
-
-
Constructor Detail
-
ContextQuery
public ContextQuery(CompletionQuery query)
Constructs a context completion query that matches documents specified byquery
.Use
addContext(CharSequence, float, boolean)
to add context(s) with boost
-
-
Method Detail
-
updateRamBytesUsed
private void updateRamBytesUsed()
-
addContext
public void addContext(java.lang.CharSequence context)
Adds an exact context with default boost of 1
-
addContext
public void addContext(java.lang.CharSequence context, float boost)
Adds an exact context with boost
-
addContext
public void addContext(java.lang.CharSequence context, float boost, boolean exact)
Adds a context with boost, setexact
to false if the context is a prefix of any indexed contexts
-
addAllContexts
public void addAllContexts()
Add all contexts with a boost of 1f
-
toString
public java.lang.String toString(java.lang.String field)
Description copied from class:Query
Prints a query to a string, withfield
assumed to be the default field and omitted.- Overrides:
toString
in classCompletionQuery
-
createWeight
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws java.io.IOException
Description copied from class:Query
Expert: Constructs an appropriate Weight implementation for this query.Only implemented by primitive queries, which re-write to themselves.
- Overrides:
createWeight
in classQuery
scoreMode
- How the produced scorers will be consumed.boost
- The boost that is propagated by the parent queries.- Throws:
java.io.IOException
-
toContextAutomaton
private static Automaton toContextAutomaton(java.util.Map<IntsRef,ContextQuery.ContextMetaData> contexts, boolean matchAllContexts)
-
equals
public boolean equals(java.lang.Object o)
Description copied from class:Query
Override and implement query instance equivalence properly in a subclass. This is required so thatQueryCache
works properly.Typically a query will be equal to another only if it's an instance of the same class and its document-filtering properties are identical that other instance. Utility methods are provided for certain repetitive code.
- Specified by:
equals
in classQuery
- See Also:
Query.sameClassAs(Object)
,Query.classHash()
-
hashCode
public int hashCode()
Description copied from class:Query
Override and implement query hash code properly in a subclass. This is required so thatQueryCache
works properly.- Specified by:
hashCode
in classQuery
- See Also:
Query.equals(Object)
-
visit
public void visit(QueryVisitor visitor)
Description copied from class:Query
Recurse through the query tree, visiting any child queries
-
ramBytesUsed
public long ramBytesUsed()
Description copied from interface:Accountable
Return the memory usage of this object in bytes. Negative values are illegal.- Specified by:
ramBytesUsed
in interfaceAccountable
-
-