浏览代码

[DOCS] Document filtered query strategies.

Adrien Grand 11 年之前
父节点
当前提交
328a7e513c
共有 1 个文件被更改,包括 29 次插入0 次删除
  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
 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.