public final class JoinUtil extends Object
Modifier and Type | Method and Description |
---|---|
static Query |
createJoinQuery(String fromField,
boolean multipleValuesPerDocument,
String toField,
Class<? extends Number> numericType,
Query fromQuery,
IndexSearcher fromSearcher,
ScoreMode scoreMode)
Method for query time joining for numeric fields.
|
static Query |
createJoinQuery(String fromField,
boolean multipleValuesPerDocument,
String toField,
Query fromQuery,
IndexSearcher fromSearcher,
ScoreMode scoreMode)
Method for query time joining.
|
static Query |
createJoinQuery(String joinField,
Query fromQuery,
Query toQuery,
IndexSearcher searcher,
ScoreMode scoreMode,
OrdinalMap ordinalMap)
Delegates to
createJoinQuery(String, Query, Query, IndexSearcher, ScoreMode, OrdinalMap, int, int) ,
but disables the min and max filtering. |
static Query |
createJoinQuery(String joinField,
Query fromQuery,
Query toQuery,
IndexSearcher searcher,
ScoreMode scoreMode,
OrdinalMap ordinalMap,
int min,
int max)
A query time join using global ordinals over a dedicated join field.
|
public static Query createJoinQuery(String fromField, boolean multipleValuesPerDocument, String toField, Query fromQuery, IndexSearcher fromSearcher, ScoreMode scoreMode) throws IOException
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.
fromField
- The from field to join frommultipleValuesPerDocument
- Whether the from field has multiple terms per documenttoField
- The to field to join tofromQuery
- The query to match documents on the from sidefromSearcher
- The searcher that executed the specified fromQueryscoreMode
- Instructs how scores from the fromQuery are mapped to the returned queryQuery
instance that can be used to join documents based on the
terms in the from and to fieldIOException
- If I/O related errors occurpublic static Query createJoinQuery(String fromField, boolean multipleValuesPerDocument, String toField, Class<? extends Number> numericType, Query fromQuery, IndexSearcher fromSearcher, ScoreMode scoreMode) throws IOException
createJoinQuery(String, boolean, String, Query, IndexSearcher, ScoreMode)
are applicable here too,
though memory consumption might be higher.
fromField
- The from field to join frommultipleValuesPerDocument
- Whether the from field has multiple terms per document
when true fromField might be DocValuesType.SORTED_NUMERIC
,
otherwise fromField should be DocValuesType.NUMERIC
toField
- The to field to join to, should be IntPoint
, LongPoint
, FloatPoint
or DoublePoint
.numericType
- either Integer
, Long
, Float
or Double
it should correspond to toField typesfromQuery
- The query to match documents on the from sidefromSearcher
- The searcher that executed the specified fromQueryscoreMode
- Instructs how scores from the fromQuery are mapped to the returned queryQuery
instance that can be used to join documents based on the
terms in the from and to fieldIOException
- If I/O related errors occurpublic static Query createJoinQuery(String joinField, Query fromQuery, Query toQuery, IndexSearcher searcher, ScoreMode scoreMode, OrdinalMap ordinalMap) throws IOException
createJoinQuery(String, Query, Query, IndexSearcher, ScoreMode, OrdinalMap, int, int)
,
but disables the min and max filtering.joinField
- The SortedDocValues
field containing the join valuesfromQuery
- The query containing the actual user query. Also the fromQuery can only match "from" documents.toQuery
- The query identifying all documents on the "to" side.searcher
- The index searcher used to execute the from queryscoreMode
- Instructs how scores from the fromQuery are mapped to the returned queryordinalMap
- The ordinal map constructed over the joinField. In case of a single segment index, no ordinal map
needs to be provided.Query
instance that can be used to join documents based on the join fieldIOException
- If I/O related errors occurpublic static Query createJoinQuery(String joinField, Query fromQuery, Query toQuery, IndexSearcher searcher, ScoreMode scoreMode, OrdinalMap ordinalMap, int min, int max) throws IOException
joinField
- The SortedDocValues
field containing the join valuesfromQuery
- The query containing the actual user query. Also the fromQuery can only match "from" documents.toQuery
- The query identifying all documents on the "to" side.searcher
- The index searcher used to execute the from queryscoreMode
- Instructs how scores from the fromQuery are mapped to the returned queryordinalMap
- The ordinal map constructed over the joinField. In case of a single segment index, no ordinal map
needs to be provided.min
- Optionally the minimum number of "from" documents that are required to match for a "to" document
to be a match. The min is inclusive. Setting min to 0 and max to Interger.MAX_VALUE
disables the min and max "from" documents filteringmax
- Optionally the maximum number of "from" documents that are allowed to match for a "to" document
to be a match. The max is inclusive. Setting min to 0 and max to Interger.MAX_VALUE
disables the min and max "from" documents filteringQuery
instance that can be used to join documents based on the join fieldIOException
- If I/O related errors occurCopyright © 2000-2019 Apache Software Foundation. All Rights Reserved.