public class ContextQuery extends CompletionQuery implements Accountable
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:
PrefixCompletionQuery, RegexCompletionQuery
or FuzzyCompletionQuery query.
addAllContexts().
When no context is added, the default behaviour is to suggest across
all contexts.
addContext(CharSequence, float, boolean) with the common
context prefix, boost and set exact to false.
SuggestField (not context enabled),
would yield results ignoring any context filtering/boosting
| Modifier and Type | Class and Description |
|---|---|
private static class |
ContextQuery.ContextCompletionWeight |
private static class |
ContextQuery.ContextMetaData
Holder for context value meta data
|
| Modifier and Type | Field and Description |
|---|---|
private static long |
BASE_RAM_BYTES |
private java.util.Map<IntsRef,ContextQuery.ContextMetaData> |
contexts |
protected CompletionQuery |
innerQuery
Inner completion query
|
private boolean |
matchAllContexts |
private long |
ramBytesUsed |
private IntsRefBuilder |
scratch |
| Constructor and Description |
|---|
ContextQuery(CompletionQuery query)
Constructs a context completion query that matches
documents specified by
query. |
| Modifier and Type | Method and Description |
|---|---|
void |
addAllContexts()
Add all contexts with a boost of 1f
|
void |
addContext(java.lang.CharSequence context)
Adds an exact context with default boost of 1
|
void |
addContext(java.lang.CharSequence context,
float boost)
Adds an exact context with boost
|
void |
addContext(java.lang.CharSequence context,
float boost,
boolean exact)
Adds a context with boost, set
exact to false
if the context is a prefix of any indexed contexts |
Weight |
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, with
field assumed to be the
default field and omitted. |
private void |
updateRamBytesUsed() |
void |
visit(QueryVisitor visitor)
Recurse through the query tree, visiting any child queries
|
getField, getFilter, getTerm, rewriteclassHash, sameClassAs, toStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetChildResourcesprivate static final long BASE_RAM_BYTES
private IntsRefBuilder scratch
private java.util.Map<IntsRef,ContextQuery.ContextMetaData> contexts
private boolean matchAllContexts
protected CompletionQuery innerQuery
private long ramBytesUsed
public ContextQuery(CompletionQuery query)
query.
Use addContext(CharSequence, float, boolean)
to add context(s) with boost
private void updateRamBytesUsed()
public void addContext(java.lang.CharSequence context)
public void addContext(java.lang.CharSequence context,
float boost)
public void addContext(java.lang.CharSequence context,
float boost,
boolean exact)
exact to false
if the context is a prefix of any indexed contextspublic void addAllContexts()
public java.lang.String toString(java.lang.String field)
Queryfield assumed to be the
default field and omitted.toString in class CompletionQuerypublic Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws java.io.IOException
QueryOnly implemented by primitive queries, which re-write to themselves.
createWeight in class QueryscoreMode - How the produced scorers will be consumed.boost - The boost that is propagated by the parent queries.java.io.IOExceptionprivate static Automaton toContextAutomaton(java.util.Map<IntsRef,ContextQuery.ContextMetaData> contexts, boolean matchAllContexts)
public boolean equals(java.lang.Object o)
QueryQueryCache 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.equals in class QueryQuery.sameClassAs(Object),
Query.classHash()public int hashCode()
QueryQueryCache works properly.hashCode in class QueryQuery.equals(Object)public void visit(QueryVisitor visitor)
Querypublic long ramBytesUsed()
AccountableramBytesUsed in interface Accountable