org.apache.lucene.search.join

## Class JoinUtil

- java.lang.Object
- - org.apache.lucene.search.join.JoinUtil

    public final class JoinUtil
    extends Object

Utility for query time joining using TermsQuery and TermsCollector.

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

### Method Summary

Methods
`static Query` `createJoinQuery(String fromField, boolean multipleValuesPerDocument, String toField, Query fromQuery, IndexSearcher fromSearcher, ScoreMode scoreMode)` Method for query time joining.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### createJoinQuery

    public static Query createJoinQuery(String fromField,
                        boolean multipleValuesPerDocument,
                        String toField,
                        Query fromQuery,
                        IndexSearcher fromSearcher,
                        ScoreMode scoreMode)
                                 throws IOException

Method for query time joining.

Execute the returned query with a `IndexSearcher` to retrieve all documents that have the same terms in the to field that match with documents matching the specified fromQuery and have the same terms in the from field.

In the case a single document relates to more than one document the `multipleValuesPerDocument` option should be set to true. When the `multipleValuesPerDocument` is set to `true` only the the score from the first encountered join value originating from the 'from' side is mapped into the 'to' side. Even in the case when a second join value related to a specific document yields a higher score. Obviously this doesn't apply in the case that `ScoreMode.None` is used, since no scores are computed at all. Memory considerations: During joining all unique join values are kept in memory. On top of that when the scoreMode isn't set to `ScoreMode.None` a float value per unique join value is kept in memory for computing scores. When scoreMode is set to `ScoreMode.Avg` also an additional integer value is kept in memory per unique join value.

Parameters:
  `fromField` - The from field to join from
  `multipleValuesPerDocument` - Whether the from field has multiple terms per document
  `toField` - The to field to join to
  `fromQuery` - The query to match documents on the from side
  `fromSearcher` - The searcher that executed the specified fromQuery
  `scoreMode` - Instructs how scores from the fromQuery are mapped to the returned query
Returns:
  a `Query` instance that can be used to join documents based on the terms in the from and to field
Throws:
  `IOException` - If I/O related errors occur