MarkLogic:了解可搜索和不可搜索的查询?

时间:2017-07-24 10:19:33

标签: marklogic query-tuning

我有以下表达式:

xdmp:plan

我做了let $q1 := cts:element-range-query(xs:QName("ts:week"), ">=" ,xs:date("2009-04-25")) return cts:search(fn:doc(), $q1, "unfiltered")/ts:top-song/ts:title/text() ,并且知道正在使用范围索引并且表达式是可搜索的

但是,当我添加XPath时:

xdmp:plan

在做fn:doc()时,它告诉我路径是无法搜索的。此外,在查询跟踪中,除了{{1}}之外没有任何可搜索的内容。

但是,因为我得到了正确的结果。我的猜测是索引工作正常。

如果是这样,那么记录消息的是什么" unsearchable" ?

在这种情况下我特别需要title元素,我可以做些什么来使整个表达式可搜索?

2 个答案:

答案 0 :(得分:3)

这段代码做了两件事:

  • 执行搜索以获取文档序列
  • 将XPath应用于文档序列以从文档中提取节点

换句话说,XPath不是搜索的一部分。它将后处理应用于搜索结果。

xdmp:estimate()xdmp:plan()都只接受搜索输入,而不接受搜索结果的后处理。

希望澄清,

答案 1 :(得分:1)

如果ts:title元素上有元素范围索引,您可以使用cts:element-values()通过应用$q1查询来检索标题,这将是一个索引解析的操作

例如:

cts:element-values(xs:QName("ts:title"), "", (), $q1)