xquery - Marklogic:使用xquery的字段范围查询和路径范围查询cts函数是什么

标签 xquery marklogic

我一直在遵循文档来理解 cts:field-range-query 和 cts:path-range-query。这些是我以前理解的链接。 https://docs.marklogic.com/cts:field-range-query https://docs.marklogic.com/cts:path-range-query

在 cts:path-range-query 中,我不明白输出。如何将字符串与 < 或 > 进行比较?

cts:search(doc(),cts:path-range-query("/name/fname",">","Jim"),"filtered")
 =>
<?xml version="1.0" encoding="UTF-8"?>
<name><fname>John</fname><mname>Rob</mname><lname>Goldings</lname></name>
<?xml version="1.0" encoding="UTF-8"?>
<name><fname>Ooi</fname><mname>Ben</mname><lname>Fu</lname></name>

在 cts:field-range-query 中,这里我也没有得到输出。

ts:search(doc(),cts:field-range-query("aname",">","Jim Kurla"));

(:
  returns the following:
<?xml version="1.0" encoding="UTF-8"?>
<name>
  <fname>John</fname>
  <mname>Rob</mname>
  <lname>Goldings</lname>
</name>
<?xml version="1.0" encoding="UTF-8"?>
<name>
  <fname>Ooi</fname>
  <mname>Ben</mname>
  <lname>Fu</lname>
</name>
:)

抱歉,如果这很愚蠢,但我几天来一直在试图理解这个小事情,但不知何故我不明白。非常感谢您的帮助

最佳答案

字符串比较基于字母数字比较。它实际上取决于排序规则,但默认基于 Unicode(UCA 根排序规则,区分大小写和变音符号)。 A 出现在 B 之前,但 a 出现在 B 之后,而且 alpha 出现在在Zeta之后。更令人困惑的是,10 也出现在 2 之前。

在您的示例中,路径查询仅查看 fname,其中 Jim 位于 JohnOoi 之前。

第二个示例可能是具有多个路径的字段,包括 fnamemnamelname。如果文档中存在任何大于 Jim 的名称值,则 > 满足。按字母顺序,GoldingsBenFu 位于 Jim 之前,但还有其他名称,例如 John 和后面的 Ooi 。因此也会返回这两个值。

Lee重复查询更有趣。然后,路径查询将仅返回 1 个结果(第二个),但该字段可能仍返回两个结果。

关于xquery - Marklogic:使用xquery的字段范围查询和路径范围查询cts函数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64762053/

相关文章:

java - LPX-00607 用于 ora :contains in java but not sqlplus

xml - XQuery 嵌套 For 循环

performance - 分析器结果的 Marklogic 查询优化

搜索:搜索选项从 MarkLogic 7 迁移到版本 8

php - 复杂的应用程序堆栈重构/重新设计策略

marklogic - $error :errors is empty? 时如何触发 MarkLogic 错误处理程序

rdf - 标记逻辑 7 : Semantic Search

java - Gradle 项目转换为 Maven

marklogic - 如何检查marklogic中的用户权限

xml - 如何在xQuery中获取没有 child 的节点?