Package org.apache.lucene.search.join

## Class DiversifyingChildrenFloatKnnVectorQuery

- java.lang.Object
- - org.apache.lucene.search.Query
  - - org.apache.lucene.search.KnnFloatVectorQuery
    - - org.apache.lucene.search.join.DiversifyingChildrenFloatKnnVectorQuery

-     public class DiversifyingChildrenFloatKnnVectorQuery
      extends KnnFloatVectorQuery

  kNN float vector query that joins matching children vector documents with their parent doc id. The top documents returned are the child document ids and the calculated scores. Here is how to use this in conjunction with `ToParentBlockJoinQuery`.

         Query knnQuery = new DiversifyingChildrenFloatKnnVectorQuery(fieldName, queryVector, ...);
         // Rewrite executes kNN search and collects nearest children docIds and their scores
         Query rewrittenKnnQuery = searcher.rewrite(knnQuery);
         // Join the scored children docs with their parents and score the parents
         Query childrenToParents = new ToParentBlockJoinQuery(rewrittenKnnQuery, parentsFilter, ScoreMode.MAX);

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected String` | `field` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DiversifyingChildrenFloatKnnVectorQuery​(String field, float[] query, Query childFilter, int k, BitSetProducer parentsFilter)` | Create a ToParentBlockJoinFloatVectorQuery.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected TopDocs` | `approximateSearch​(LeafReaderContext context, Bits acceptDocs, int visitedLimit, KnnCollectorManager knnCollectorManager)` |
    `boolean` | `equals​(Object o)` |
    `protected TopDocs` | `exactSearch​(LeafReaderContext context, DocIdSetIterator acceptIterator)` |
    `String` | `getField()` |
    `Query` | `getFilter()` |
    `int` | `getK()` |
    `protected KnnCollectorManager` | `getKnnCollectorManager​(int k, IndexSearcher searcher)` |
    `int` | `hashCode()` |
    `protected TopDocs` | `mergeLeafResults​(TopDocs[] arg0)` |
    `Query` | `rewrite​(IndexSearcher arg0)` |
    `String` | `toString​(String field)` |
    `void` | `visit​(QueryVisitor arg0)` |

    - ### Methods inherited from class org.apache.lucene.search.KnnFloatVectorQuery

      `getTargetCopy`

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

      `classHash, createWeight, rewrite, sameClassAs, toString`

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

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

- - ### Field Detail

    - #### field

          protected final String field

  - ### Constructor Detail

    - #### DiversifyingChildrenFloatKnnVectorQuery

          public DiversifyingChildrenFloatKnnVectorQuery​(String field,
                                                         float[] query,
                                                         Query childFilter,
                                                         int k,
                                                         BitSetProducer parentsFilter)

      Create a ToParentBlockJoinFloatVectorQuery.
      Parameters:
        `field` - the query field
        `query` - the vector query
        `childFilter` - the child filter
        `k` - how many parent documents to return given the matching children
        `parentsFilter` - Filter identifying the parent documents.

  - ### Method Detail

    - #### exactSearch

          protected TopDocs exactSearch​(LeafReaderContext context,
                                        DocIdSetIterator acceptIterator)
                                 throws IOException

      Throws:
        `IOException`

    - #### getKnnCollectorManager

          protected KnnCollectorManager getKnnCollectorManager​(int k,
                                                               IndexSearcher searcher)

    - #### approximateSearch

          protected TopDocs approximateSearch​(LeafReaderContext context,
                                              Bits acceptDocs,
                                              int visitedLimit,
                                              KnnCollectorManager knnCollectorManager)
                                       throws IOException

      Overrides:
        `approximateSearch` in class `KnnFloatVectorQuery`
      Throws:
        `IOException`

    - #### toString

          public String toString​(String field)

      Overrides:
        `toString` in class `KnnFloatVectorQuery`

    - #### equals

          public boolean equals​(Object o)

      Overrides:
        `equals` in class `KnnFloatVectorQuery`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `KnnFloatVectorQuery`

    - #### rewrite

          public Query rewrite​(IndexSearcher arg0)
                        throws IOException

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

    - #### mergeLeafResults

          protected TopDocs mergeLeafResults​(TopDocs[] arg0)

    - #### visit

          public void visit​(QueryVisitor arg0)

      Specified by:
        `visit` in class `Query`

    - #### getField

          public String getField()

    - #### getK

          public int getK()

    - #### getFilter

          public Query getFilter()