xquery - cts 中的数字 :word query in Marklogic

标签 xquery marklogic

我有一个 cts:word-query,其文本值是数字。 cts:search(fn:doc(),cts:word-query("226"))

此查询将获取仅与文档中的 226 匹配的结果。但我还需要获取包含 0026 的文档。

示例: 这是 abc.xml

<a>
<b>00226</b>
</a>

这是 abc1.xml

<a>
<b>226</b>
</a>

如果我将查询指定为 cts:search(fn:doc(),cts:word-query("226")),它将仅获取 abc1.xml,并且如果查询是cts:search(fn:doc(),cts:word-query("00226")),它将仅获取 abc.xml。

但我需要获取这两个文档,无论前导零如何。

最佳答案

最简单的方法是使用通配符 (*) 并添加 wildcarded 选项

cts:search(fn:doc(),cts:word-query("*226", ('wildcarded')))

编辑:

尽管这与示例文档匹配,正如 Kishan 在评论中指出的那样,通配符也会匹配不需要的文档(例如包含“226226”)。

由于数据是混合的,范围索引在这种情况下不是一个选项,因此这里有一个替代方案:

cts:search(
    fn:doc(),
    cts:word-query(
        for $lead in ('', '0', '00', '000') 
        return $lead || "226"))

显然,这取决于可以有多少个前导零,并且只有在已知且有限的情况下才有效。

关于xquery - cts 中的数字 :word query in Marklogic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715560/

相关文章:

xquery - 如何使用 SOAP UI Xquery Matches 获取某些预期值

java - 从 xml 中获取数据使用 Xquery with starts with 函数

java - MarkLogic 关于使用 Java API 进行 SELECT 等效操作的基本问题

marklogic - 如何使用mlgradle在MarkLogic部署中配置Taskserver 'max time limit'?

xquery - 什么是 MarkLogic 查询控制台中的属性选项卡

MarkLogic 8 JavaScript 数组

html - 通过带有字符通配符的属性值选择带有 Xpath 的元素

java - XPTY0004 : Required item type of first operand of '>' is numeric; supplied value has item type xs:string

intellij-idea - 无法将 functx 库与 intellij idea 社区版一起使用

MarkLogic 内容泵 mlcp 文档 URI 问题