Module org.apache.lucene.suggest
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
A
CompletionQuery
that matches documents specified by a wrapped CompletionQuery
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 ClassesModifier and TypeClassDescriptionprivate static class
private static class
Holder for context value meta data -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final long
private Map
<IntsRef, ContextQuery.ContextMetaData> protected CompletionQuery
Inner completion queryprivate boolean
private long
private IntsRefBuilder
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
Constructor Summary
ConstructorsConstructorDescriptionContextQuery
(CompletionQuery query) Constructs a context completion query that matches documents specified byquery
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Add all contexts with a boost of 1fvoid
addContext
(CharSequence context) Adds an exact context with default boost of 1void
addContext
(CharSequence context, float boost) Adds an exact context with boostvoid
addContext
(CharSequence context, float boost, boolean exact) Adds a context with boost, setexact
to false if the context is a prefix of any indexed contextscreateWeight
(IndexSearcher searcher, ScoreMode scoreMode, float boost) Expert: Constructs an appropriate Weight implementation for this query.boolean
Override and implement query instance equivalence properly in a subclass.int
hashCode()
Override and implement query hash code properly in a subclass.long
Return the memory usage of this object in bytes.private static void
sortDescending
(int[] array) Sorts and reverses the array.private static Automaton
toContextAutomaton
(Map<IntsRef, ContextQuery.ContextMetaData> contexts, boolean matchAllContexts) Prints a query to a string, withfield
assumed to be the default field and omitted.private void
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, rewrite, 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 Details
-
BASE_RAM_BYTES
private static final long BASE_RAM_BYTES -
scratch
-
contexts
-
matchAllContexts
private boolean matchAllContexts -
innerQuery
Inner completion query -
ramBytesUsed
private long ramBytesUsed
-
-
Constructor Details
-
ContextQuery
Constructs a context completion query that matches documents specified byquery
.Use
addContext(CharSequence, float, boolean)
to add context(s) with boost
-
-
Method Details
-
updateRamBytesUsed
private void updateRamBytesUsed() -
addContext
Adds an exact context with default boost of 1 -
addContext
Adds an exact context with boost -
addContext
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
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 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
- Parameters:
scoreMode
- How the produced scorers will be consumed.boost
- The boost that is propagated by the parent queries.- Throws:
IOException
-
sortDescending
private static void sortDescending(int[] array) Sorts and reverses the array. -
toContextAutomaton
private static Automaton toContextAutomaton(Map<IntsRef, ContextQuery.ContextMetaData> contexts, boolean matchAllContexts) -
equals
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 to those of the other instance. Utility methods are provided for certain repetitive code.
-
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. -
visit
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
-