Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/testing/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MarkLogic中使用xdmp:plan_Marklogic_Query Tuning - Fatal编程技术网

在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值)
我有以下问题:

  • 在我得到的两个查询的结果中:表达式是不可搜索的。这是好事吗?这是否意味着索引已经被使用,无法进行进一步的索引

  • (范围索引是为类型启用的)我猜fn:distict+Xpath使用范围索引,但由于Xpath的原因,涉及到过滤。OTOH搜索:搜索只使用值词典,所以它会进行未过滤的搜索吗? 如果没有,是否有方法以未过滤的方式查找不同的值


  • 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)