整个数据库中的 MarkLogic 单词搜索元素 + 属性寻找 cts:word-query 的扩展替代方案?

问题描述

我想在整个 MarkLogic 数据库(跨元素和属性)中搜索包含特定单词的文档。 cts:word-query 仅适用于元素。我如何在 MarkLogic 中实现这一目标?

示例:

文档 1.<abc>Data correction query</abc>

文档 2.<element2 state="correction"></element2>

输出- 如果搜索词是“更正”,则应返回上述两个文档/URIS。

包含该词的可能元素属性集不是固定的,因为它是数据更正练习。在不知道属性名称的情况下,有没有可能扩展这个 cts:word-query 之类的搜索元素?

解决方法

属性不包含在通用索引中,因此您不能只使用标准的 cts:word-query

您可以为要定位的属性创建一个带有 XPath 的 field index,并启用单词搜索选项。根据数据库的大小,使用像 //*/@* 这样的超通用 XPath 可能不是一个好主意,但它是可能的。

假设您创建了一个名为 attr 的字段,那么您可以像这样使用 cts:field-word-query 进行搜索:

cts:search(doc(),cts:or-query((
    cts:word-query("correction"),cts:field-word-query("attr","correction")
  ))
)