[DOCS] Document filtered query strategies.

This commit is contained in:
Adrien Grand 2014-05-28 17:57:43 +02:00
parent 4ff511000e
commit 328a7e513c
1 changed files with 29 additions and 0 deletions

View File

@ -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.