Package org.apache.lucene.search.join

# Class ToParentBlockJoinQuery

java.lang.Object
org.apache.lucene.search.Query
org.apache.lucene.search.join.ToParentBlockJoinQuery

public class ToParentBlockJoinQuery extends Query
This query requires that you index children and parent docs as a single block, using the `IndexWriter.addDocuments()` or `IndexWriter.updateDocuments()` API. In each block, the child documents must appear first, ending with the parent document. At search time you provide a Filter identifying the parents, however this Filter must provide an `BitSet` per sub-reader.

Once the block index is built, use this query to wrap any sub-query matching only child docs and join matches in that child document space up to the parent document space. You can then use this Query as a clause with other queries in the parent document space.

See `ToChildBlockJoinQuery` if you need to join in the reverse order.

The child documents must be orthogonal to the parent documents: the wrapped child query must never return a parent document.

See `org.apache.lucene.search.join` for an overview.

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

## Constructor Summary

Constructors
Constructor
Description
`ToParentBlockJoinQuery(Query childQuery, BitSetProducer parentsFilter, ScoreMode scoreMode)`
Create a ToParentBlockJoinQuery.

## Method Summary

Modifier and Type
Method
Description
`Weight`
`createWeight(IndexSearcher searcher, ScoreMode weightScoreMode, float boost)`
`boolean`
`equals(Object other)`
`Query`
`getChildQuery()`
Return our child query.
`int`
`hashCode()`
`Query`
`rewrite(IndexSearcher indexSearcher)`
`String`
`toString(String field)`
`void`
`visit(QueryVisitor visitor)`

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

## Constructor Details

### ToParentBlockJoinQuery

public ToParentBlockJoinQuery(Query childQuery, BitSetProducer parentsFilter, ScoreMode scoreMode)
Create a ToParentBlockJoinQuery.

Parameters:
  `childQuery` - Query matching child documents.
  `parentsFilter` - Filter identifying the parent documents.
  `scoreMode` - How to aggregate multiple child scores into a single parent score.

## Method Details

### visit

public void visit(QueryVisitor visitor)

Specified by:
  `visit` in class `Query`

### createWeight

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

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

### getChildQuery

public Query getChildQuery()
Return our child 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`

### equals

public boolean equals(Object other)

Specified by:
  `equals` in class `Query`

### hashCode

public int hashCode()

Specified by:
  `hashCode` in class `Query`