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

时间:2020-11-10 02:33:33

标签: 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>
:)

对不起,如果这很愚蠢,但是几天以来我一直在试图理解这个小东西,但是不知何故我不明白。非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

字符串比较基于字母数字比较。它实际上取决于排序规则,但默认设置基于Unicode(UCA根排序规则,区分大小写和变音符号)。 AB之前,但是aB之后,并且alphaZeta之后。更令人困惑的是,10也早于2

在您的示例中,路径查询仅查看fname,其中JimJohnOoi之前。

第二个示例可能是具有多个路径的字段,包括fnamemnamelname>满足文档中是否有任何名称名称大于JimGoldingsBenFu按字母顺序排在Jim之前,但是后面还有其他名称,例如JohnOoi。这样一来,这两个值也会返回。

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