Marklogic:什么是使用 xquery 的字段范围查询和路径范围查询 cts 函数
Marklogic: what are field range query and path range query cts functions using xquery
我一直在关注文档以了解 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 Root Collation with case and diacritic sensitivity)。 A
在 B
之前,但 a
在 B
之后,并且 alpha
在 Zeta
之后。更令人困惑的是,10
也出现在 2
之前。
在您的示例中,路径查询仅查看 fname
,其中 Jim
在 John
和 Ooi
之前。
第二个示例可能是一个具有多个路径的字段,包括 fname
、mname
和 lname
。如果文档中有任何名称值大于 Jim
,则 >
满足。 Goldings
、Ben
和 Fu
按字母顺序排在 Jim
之前,但还有其他名称,如 John
和 Ooi
排在后面。所以 return 这两个值也是如此。
用 Lee
重复查询会更有趣。路径查询将 return 只有 1 个结果(第二个),但该字段可能仍然 return 两个。
我一直在关注文档以了解 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 Root Collation with case and diacritic sensitivity)。 A
在 B
之前,但 a
在 B
之后,并且 alpha
在 Zeta
之后。更令人困惑的是,10
也出现在 2
之前。
在您的示例中,路径查询仅查看 fname
,其中 Jim
在 John
和 Ooi
之前。
第二个示例可能是一个具有多个路径的字段,包括 fname
、mname
和 lname
。如果文档中有任何名称值大于 Jim
,则 >
满足。 Goldings
、Ben
和 Fu
按字母顺序排在 Jim
之前,但还有其他名称,如 John
和 Ooi
排在后面。所以 return 这两个值也是如此。
用 Lee
重复查询会更有趣。路径查询将 return 只有 1 个结果(第二个),但该字段可能仍然 return 两个。