Package 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
Modifier and Type
Field
Description
`protected CompletionQuery`
`innerQuery`
Inner completion query

### 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 by `query`.

## Method Summary

Modifier and Type
Method
Description
`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 Details

### innerQuery

protected CompletionQuery innerQuery
Inner completion query

## Constructor Details

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

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

Specified by:
  `visit` in class `Query`

### ramBytesUsed

public long ramBytesUsed()

Specified by:
  `ramBytesUsed` in interface `Accountable`