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`