[DOCS] Document filtered query strategies.
This commit is contained in:
parent
4ff511000e
commit
328a7e513c
|
@ -23,3 +23,32 @@ query maps to Lucene `FilteredQuery`.
|
||||||
The filter object can hold only filter elements, not queries. Filters
|
The filter object can hold only filter elements, not queries. Filters
|
||||||
can be much faster compared to queries since they don't perform any
|
can be much faster compared to queries since they don't perform any
|
||||||
scoring, especially when they are cached.
|
scoring, especially when they are cached.
|
||||||
|
|
||||||
|
==== Filter strategy
|
||||||
|
|
||||||
|
The filtered query allows to configure how to intersect the filter with the query:
|
||||||
|
|
||||||
|
[source,js]
|
||||||
|
--------------------------------------------------
|
||||||
|
{
|
||||||
|
"filtered" : {
|
||||||
|
"query" : {
|
||||||
|
// query definition
|
||||||
|
},
|
||||||
|
"filter" : {
|
||||||
|
// filter definition
|
||||||
|
},
|
||||||
|
"strategy": "leap_frog"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
[horizontal]
|
||||||
|
`leap_frog_query_first`:: Look for the first document matching the query, and then alternatively advance the query and the filter to find common matches.
|
||||||
|
`leap_frog_filter_first`:: Look for the first document matching the filter, and then alternatively advance the query and the filter to find common matches.
|
||||||
|
`leap_frog`:: Same as `leap_frog_query_first`.
|
||||||
|
`query_first`:: If the filter supports random access, then search for documents using the query, and then consult the filter to check whether there is a match. Otherwise fall back to `leap_frog_query_first`.
|
||||||
|
`random_access_${threshold}`:: If the filter supports random access and if there is at least one matching document among the first `threshold` ones, then apply the filter first. Otherwise fall back to `leap_frog_query_first`. `${threshold}` must be greater than or equal to `1`.
|
||||||
|
`random_access_always`:: Apply the filter first if it supports random access. Otherwise fall back to `leap_frog_query_first`.
|
||||||
|
|
||||||
|
The default strategy is to use `query_first` on filters that are not advanceable such as geo filters and script filters, and `random_access_100` on other filters.
|
||||||
|
|
Loading…
Reference in New Issue