【问题标题】:MarkLogic: XDMP-UNSEARCHABLE error or searchable path expressionMarkLogic:XDMP-UNSEARCHABLE 错误或可搜索的路径表达式
【发布时间】:2017-11-17 20:42:50
【问题描述】:

帮助我理解“完全可搜索的路径表达式”。无法搜索的路径表达式示例如下:

xquery version "1.0-ml";
(:constructed sequence :)
cts:search((<last_name>Mortensen</last_name>,<last_name>Hurt</last_name>,<last_name>Bello</last_name>),cts:word-query("Bello"))

使用 $doc/movies//country 等变量的 XPATH 表达式(在“Xquery”Priscilla Walmsley 书中称为“动态路径”)

使用不同于 child:: 或 descendant:: 的 XPath 轴的 XPATH 表达式,例如:

cts:search(doc("doc/movies")/descendant::year[. = '1995']/parent::movie ,cts:word-query("Tom Stall"))

或 见例子MarkLogic: Understanding searchable and unsearchable queries?

什么是“可搜索路径表达式”的正式定义?

【问题讨论】:

    标签: xpath marklogic


    【解决方案1】:

    cts:search 有一些特别之处。您需要了解在调用 cts:search 之前不会评估第一个参数。相反,表达式本身会被传递到数据层,然后数据层会尝试主要使用索引来解析表达式。

    这就是为什么您不能提供构造节点,也不能提供包含数据层未知值的变量的 XPath 表达式。所以,这就是它提到(un)searchable expressions 的原因。 performance guide(也被 David Ennis 引用)是这样说的:

    完全可搜索的 XPath 表达式是可以使用索引有效解析的表达式。

    为了让自己的生活更轻松,请尝试尽可能使用collection() 作为第一个参数,并通过查询参数提供任何其他约束。

    如果您需要过滤构造的节点,或其他表达式的结果,请考虑使用cts:contains

    HTH!

    【讨论】:

      【解决方案2】:

      可搜索路径表达式含义的明确示例在命名方便的部分'Fully Searchable Paths and cts:search Operations'..下定义。

      查看您的代码,我建议您阅读Search Developer's Guide。为方便起见,这里是cts:search section 的深层链接。

      此外,您提到了 xQuery 并参考了一本书或其他文献。 xQuery 有很多版本——当前的 W3C 建议是 version3.1。您可能想看看description of MarkLogic's implementation,因为它最初源自 1.0 方言,并且多年来一直在增强。

      编辑: 此后,用户要求提供更多指导 通过 cmets。以下是基于原始代码示例的(众多)可能解决方案之一:

      xquery version "1.0-ml";
      (:constructed sequence :)
      let $last-name := ('Mortensen','Hurt','Bello')
      return cts:search(fn:collection(),cts:and-query(
                  (
                    cts:element-word-query(xs:QName('last-name'),  $last-name),
                    cts:word-query("Bello")
                  )
                )
               ) 
      

      【讨论】:

      • 该代码应该显示构造的序列不可搜索并给出 XDMP-UNSEARCHABLE 错误。有什么问题,请改写。
      • @mg_kedzie :您的原始帖子不要求修复您的代码。它要求有人提供我提供的“可搜索表达式”的定义。我还进一步向您展示了在哪里了解 cts 查询,因为很明显您需要修改您对这两个项目的了解以及它们如何协同工作。我原以为您会具备制定正确构造的查询所需的知识。在所有情况下,都会根据您的样品提供样品。为此,我不得不做出假设。
      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 2017-01-15
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多