在MarkLogic中使用xdmp:plan
我想比较两个查询: (一) (二)在MarkLogic中使用xdmp:plan,marklogic,query-tuning,Marklogic,Query Tuning,我想比较两个查询: (一) (二) 声明变量$options:= ; xdmp:plan(搜索:搜索(“,$options)/search:facet/search:facet值) 我有以下问题: 在我得到的两个查询的结果中:表达式是不可搜索的。这是好事吗?这是否意味着索引已经被使用,无法进行进一步的索引 (范围索引是为类型启用的)我猜fn:distict+Xpath使用范围索引,但由于Xpath的原因,涉及到过滤。OTOH搜索:搜索只使用值词典,所以它会进行未过滤的搜索吗? 如果没有,是否有
声明变量$options:=
;
xdmp:plan(搜索:搜索(“,$options)/search:facet/search:facet值)
我有以下问题:
xdmp:plan不接受任意表达式作为其操作数:它看起来像函数,但实际上不是。(如果您仔细想想,一定是这样,因为如果它是一个函数,它会首先计算它的参数,因此它没有创建计划的基础。)它不是用来比较两个通用XQuery表达式,而是用来比较搜索或路径中涉及的索引操作 您只能给它一个XPath或cts:search表达式 所以:
xdmp:plan(ts:top-song/ts:genres/ts:genre/text())
对于
search:search
,您可以使用一个选项来启用它(返回计划
)xdmp:plan不将任意表达式作为其操作数:它看起来像一个函数,但实际上不是。(如果您仔细想想,一定是这样,因为如果它是一个函数,它会首先计算它的参数,因此它没有创建计划的基础。)它不是用来比较两个通用XQuery表达式,而是用来比较搜索或路径中涉及的索引操作
您只能给它一个XPath或cts:search表达式
所以:xdmp:plan(ts:top-song/ts:genres/ts:genre/text())
对于
search:search
您可以使用一个选项来启用它(退货计划
)您能解释一下第一个问题吗?“expression is unrchable”的确切含义是什么?我使用了return plan,这再次表明查询是不可搜索的。为什么会这样?这两种方法不都应该利用范围索引和值词典吗?是的,它们应该,但在这两种情况下,您都以非法的方式调用了xdmp:plan。xdmp:plan无法传递像search:search或distinct value这样的函数调用。当你尝试这样做的时候,你会发现它是不可探测的。好的,谢谢。我们能说其中一个会更优化吗。“不可搜索的”是一个特定于marklogic的术语。很多人(包括我自己)一时难以理解。它是一个高效的ML编程的基础概念,所以你应该花时间研究它。大致上:XQuery的“ML”实现是“增强的”——并非所有表达式都是等效的。有些XQuery表达式是“特殊的”,编译器和运行时会将它们理解为“可搜索的”——也就是说,它们可以分解为索引引用和查询计划。并非所有表达式都是“可搜索的”。了解差异可以让你理解如何优化,你能对第一个问题有所启发吗?“expression is unrchable”的确切含义是什么?我使用了return plan,这再次表明查询是不可搜索的。为什么会这样?这两种方法不都应该利用范围索引和值词典吗?是的,它们应该,但在这两种情况下,您都以非法的方式调用了xdmp:plan。xdmp:plan无法传递像search:search或distinct value这样的函数调用。当你尝试这样做的时候,你会发现它是不可探测的。好的,谢谢。我们能说其中一个会更优化吗。“不可搜索的”是一个特定于marklogic的术语。很多人(包括我自己)一时难以理解。它是一个高效的ML编程的基础概念,所以你应该花时间研究它。大致上:XQuery的“ML”实现是“增强的”——并非所有表达式都是等效的。有些XQuery表达式是“特殊的”,编译器和运行时会将它们理解为“可搜索的”——也就是说,它们可以分解为索引引用和查询计划。并非所有表达式都是“可搜索的”。了解差异可以让您了解如何进行优化
xdmp:plan(fn:distinct-values(/ts:top-song/ts:genres/ts:genre/text(), "http://marklogic.com/collation/en/S1/AS/T00BB"))
declare variable $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="genre">
<range type="xs:string" collation="http://marklogic.com/collation/en/S1/AS/T00BB">
<element ns="http://marklogic.com/MLU/top-songs" name="genre"/>
</range>
</constraint>
</options>;
xdmp:plan(search:search("", $options)/search:facet/search:facet-value)