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 theIndexWriter.addDocuments()
orIndexWriter.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 anBitSet
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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
ToParentBlockJoinQuery.BlockJoinScorer
private static class
ToParentBlockJoinQuery.BlockJoinWeight
private static class
ToParentBlockJoinQuery.ParentApproximation
private static class
ToParentBlockJoinQuery.ParentTwoPhase
-
Field Summary
Fields Modifier and Type Field Description private Query
childQuery
private BitSetProducer
parentsFilter
private ScoreMode
scoreMode
-
Constructor Summary
Constructors Constructor Description ToParentBlockJoinQuery(Query childQuery, BitSetProducer parentsFilter, ScoreMode scoreMode)
Create a ToParentBlockJoinQuery.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Weight
createWeight(IndexSearcher searcher, ScoreMode weightScoreMode, float boost)
Expert: Constructs an appropriate Weight implementation for this query.boolean
equals(java.lang.Object other)
Override and implement query instance equivalence properly in a subclass.private boolean
equalsTo(ToParentBlockJoinQuery other)
Query
getChildQuery()
Return our child query.int
hashCode()
Override and implement query hash code properly in a subclass.Query
rewrite(IndexReader reader)
Expert: called to re-write queries into primitive queries.java.lang.String
toString(java.lang.String field)
Prints a query to a string, withfield
assumed to be the default field and omitted.void
visit(QueryVisitor visitor)
Recurse through the query tree, visiting any child queries-
Methods inherited from class org.apache.lucene.search.Query
classHash, sameClassAs, toString
-
-
-
-
Field Detail
-
parentsFilter
private final BitSetProducer parentsFilter
-
childQuery
private final Query childQuery
-
scoreMode
private final ScoreMode scoreMode
-
-
Constructor Detail
-
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 Detail
-
visit
public void visit(QueryVisitor visitor)
Description copied from class:Query
Recurse through the query tree, visiting any child queries
-
createWeight
public Weight createWeight(IndexSearcher searcher, ScoreMode weightScoreMode, float boost) throws java.io.IOException
Description copied from class:Query
Expert: Constructs an appropriate Weight implementation for this query.Only implemented by primitive queries, which re-write to themselves.
- Overrides:
createWeight
in classQuery
weightScoreMode
- How the produced scorers will be consumed.boost
- The boost that is propagated by the parent queries.- Throws:
java.io.IOException
-
getChildQuery
public Query getChildQuery()
Return our child query.
-
rewrite
public Query rewrite(IndexReader reader) throws java.io.IOException
Description copied from class:Query
Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.
-
toString
public java.lang.String toString(java.lang.String field)
Description copied from class:Query
Prints a query to a string, withfield
assumed to be the default field and omitted.
-
equals
public boolean equals(java.lang.Object other)
Description copied from class:Query
Override and implement query instance equivalence properly in a subclass. This is required so thatQueryCache
works properly. Typically a query will be equal to another only if it's an instance of the same class and its document-filtering properties are identical that other instance. Utility methods are provided for certain repetitive code.- Specified by:
equals
in classQuery
- See Also:
Query.sameClassAs(Object)
,Query.classHash()
-
equalsTo
private boolean equalsTo(ToParentBlockJoinQuery other)
-
hashCode
public int hashCode()
Description copied from class:Query
Override and implement query hash code properly in a subclass. This is required so thatQueryCache
works properly.- Specified by:
hashCode
in classQuery
- See Also:
Query.equals(Object)
-
-