1

我有以下表达式:

let $q1 := cts:element-range-query(xs:QName("ts:week"), ">=" ,xs:date("2009-04-25"))
return cts:search(fn:doc(), $q1, "unfiltered")

我做了一个xdmp:plan,并且知道正在使用范围索引并且表达式是可搜索的

但是,当我添加 XPath 时:

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

在做 axdmp:plan时,它告诉我路径是不可搜索的。进一步在查询跟踪中进行,除了fn:doc()没有可搜索的内容外。

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

如果是这样,什么是记录消息“不可搜索”?

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

4

2 回答 2

3

这段代码做了两件事:

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

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

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

希望澄清,

于 2017-07-24T16:50:53.480 回答
1

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

例如:

cts:element-values(xs:QName("ts:title"), "", (), $q1)
于 2017-07-25T01:04:57.953 回答