org.apache.lucene.search.suggest.document

## 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

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` or `FuzzyCompletionQuery` 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 set `exact` to false.
- Using this query against a `SuggestField` (not context enabled), would yield results ignoring any context filtering/boosting

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Field Summary

Fields
`protected CompletionQuery` `innerQuery` Inner completion query

### Constructor Summary

Constructors
Constructor and Description
`ContextQuery(CompletionQuery query)` Constructs a context completion query that matches documents specified by `query`.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addAllContexts()` Add all contexts with a boost of 1f
`void` `addContext(CharSequence context)` Adds an exact context with default boost of 1
`void` `addContext(CharSequence context, float boost)` Adds an exact context with boost
`void` `addContext(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)`
`boolean` `equals(Object o)`
`int` `hashCode()`
`long` `ramBytesUsed()`
`String` `toString(String field)`
`void` `visit(QueryVisitor visitor)`

### 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

#### innerQuery

    protected CompletionQuery innerQuery

Inner completion query

### Constructor Detail

#### ContextQuery

    public ContextQuery(CompletionQuery query)

Constructs a context completion query that matches documents specified by `query`.

Use `addContext(CharSequence, float, boolean)` to add context(s) with boost

### Method Detail

#### addContext

    public void addContext(CharSequence context)

Adds an exact context with default boost of 1

#### addContext

    public void addContext(CharSequence context,
                           float boost)

Adds an exact context with boost

#### addContext

    public void addContext(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

#### addAllContexts

    public void addAllContexts()

Add all contexts with a boost of 1f

#### toString

    public String toString(String field)

Overrides:
  `toString` in class `CompletionQuery`

#### createWeight

    public Weight createWeight(IndexSearcher searcher,
                               ScoreMode scoreMode,
                               float boost)
                        throws IOException

Overrides:
  `createWeight` in class `Query`
Throws:
  `IOException`

#### equals

    public boolean equals(Object o)

Specified by:
  `equals` in class `Query`

#### hashCode

    public int hashCode()

Specified by:
  `hashCode` in class `Query`

#### visit

    public void visit(QueryVisitor visitor)

Overrides:
  `visit` in class `Query`

#### ramBytesUsed

    public long ramBytesUsed()

Specified by:
  `ramBytesUsed` in interface `Accountable`