Package org.apache.lucene.facet

# Class DrillDownQuery

java.lang.Object
org.apache.lucene.search.Query
org.apache.lucene.facet.DrillDownQuery

public final class DrillDownQuery extends Query
A `Query` for drill-down over facet categories. You should call `add(String, String...)` for every group of categories you want to drill-down over.

NOTE: if you choose to create your own `Query` by calling `term(java.lang.String, java.lang.String, java.lang.String...)`, it is recommended to wrap it in a `BoostQuery` with a boost of `0.0f`, so that it does not affect the scores of the documents.

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

## Constructor Summary

Constructors
Constructor
Description
`DrillDownQuery(FacetsConfig config)`
Creates a new `DrillDownQuery` without a base query, to perform a pure browsing query (equivalent to using `MatchAllDocsQuery` as base).
`DrillDownQuery(FacetsConfig config, Query baseQuery)`
Creates a new `DrillDownQuery` over the given base query.

## Method Summary

Modifier and Type
Method
Description
`void`
`add(String dim, String... path)`
Adds one dimension of drill downs; if you pass the same dimension more than once it is OR'd with the previous constraints on that dimension, and all dimensions are AND'd against each other and the base query.
`void`
`add(String dim, Query subQuery)`
Expert: add a custom drill-down subQuery.
`DrillDownQuery`
`clone()`
`boolean`
`equals(Object other)`
`Query`
`getBaseQuery()`
Returns the internal baseQuery of the DrillDownQuery
`Query[]`
`getDrillDownQueries()`
Returns the dimension queries added either via `add(String, Query)` or `add(String, String...)`
`int`
`hashCode()`
`Query`
`rewrite(IndexSearcher indexSearcher)`
`static Term`
`term(String field, String dim, String... path)`
Creates a drill-down term.
`String`
`toString(String field)`
`void`
`visit(QueryVisitor visitor)`

### Methods inherited from class org.apache.lucene.search.Query

`classHash, createWeight, sameClassAs, toString`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### DrillDownQuery

public DrillDownQuery(FacetsConfig config)
Creates a new `DrillDownQuery` without a base query, to perform a pure browsing query (equivalent to using `MatchAllDocsQuery` as base).

### DrillDownQuery

public DrillDownQuery(FacetsConfig config, Query baseQuery)
Creates a new `DrillDownQuery` over the given base query. Can be `null`, in which case the result `Query` from `Query.rewrite(IndexSearcher)` will be a pure browsing query, filtering on the added categories only.

## Method Details

### term

public static Term term(String field, String dim, String... path)
Creates a drill-down term.

### add

public void add(String dim, String... path)
Adds one dimension of drill downs; if you pass the same dimension more than once it is OR'd with the previous constraints on that dimension, and all dimensions are AND'd against each other and the base query.

### add

public void add(String dim, Query subQuery)
Expert: add a custom drill-down subQuery. Use this when you have a separate way to drill-down on the dimension than the indexed facet ordinals.

### clone

public DrillDownQuery clone()

Overrides:
  `clone` in class `Object`

### hashCode

public int hashCode()

Specified by:
  `hashCode` in class `Query`

### equals

public boolean equals(Object other)

Specified by:
  `equals` in class `Query`

### rewrite

public Query rewrite(IndexSearcher indexSearcher) throws IOException

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

### toString

public String toString(String field)

Specified by:
  `toString` in class `Query`

### visit

public void visit(QueryVisitor visitor)

Specified by:
  `visit` in class `Query`

### getBaseQuery

public Query getBaseQuery()
Returns the internal baseQuery of the DrillDownQuery

Returns:
  The baseQuery used on initialization of DrillDownQuery

### getDrillDownQueries

public Query[] getDrillDownQueries()
Returns the dimension queries added either via `add(String, Query)` or `add(String, String...)`

Returns:
  The array of dimQueries