Explorar o código

[DOCS] Document filtered query strategies.

Adrien Grand %!s(int64=11) %!d(string=hai) anos
pai
achega
328a7e513c
Modificáronse 1 ficheiros con 29 adicións e 0 borrados
  1. 29 0
      docs/reference/query-dsl/queries/filtered-query.asciidoc

+ 29 - 0
docs/reference/query-dsl/queries/filtered-query.asciidoc

@@ -23,3 +23,32 @@ query maps to Lucene `FilteredQuery`.
 The filter object can hold only filter elements, not queries. Filters
 can be much faster compared to queries since they don't perform any
 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.