2

我有以下代码:

cts:and-query((
cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive"),
cts:element-query(xs:QName("beginpage"),
cts:and-query(()))
))

但想添加一个cts:or-query以查找高亮的“文档页”,但不知道要使用什么。我试过cts:element-query了,但我认为这不是一个元素。它看起来像一个标记或什么的。有什么建议么?

在此处输入图像描述

4

1 回答 1

2

目前没有一种方法可以在 a 上创建索引processing-instruction()(使用路径范围索引或其他方式)。

如果您已经在利用信封模式,则可以将其processing-instruction()具体化为信封中的一个元素<docpage num="i"/>,然后使用cts:element-attribute-value-query()

cts:and-query((
  cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive"),
  cts:or-query((
    cts:element-query(xs:QName("beginpage"),
    cts:element-attribute-value-query(xs:QName("docpage"), xs:QName("num"), "i")
  ))
))

或者您可以创建一个文档属性,然后使用cts:properties-fragment-query()

cts:and-query((
  cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive"),
  cts:or-query((
    cts:element-query(xs:QName("beginpage"),
    cts:document-fragment-query(
      cts:element-attribute-value-query(xs:QName("docpage"), xs:QName("num"), "i")
    )
  ))
))

否则,您需要通过 XPath 对搜索结果进行过滤。

cts:search(doc(),
  cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive")
)[book/(beginpage or processing-instruction("docpage") = 'num="i"')]

这将需要过滤(阅读匹配的文档),因此此查询响应的速度取决于从搜索条件返回的文档数量,以及您对返回多少文档的限制。

于 2018-08-31T16:13:19.333 回答