如何在 MarkLogic 6 中执行不区分大小写的匹配
How to perform a case-insensitive match in MarkLogic 6
您好,我在 MarkLogic 中使用了 cts 搜索和 XPath 查询,而且我使用了不止一个参数。我需要捕获大写字符和小字符(在 XML 搜索中)。
样本XML
<PP uri="/2000_4_174.xml">
<P name="jur" value="ht"/>
<P name="sitting" value="17 AUGUST"/>
<P name="startpage" value="174"/>
</PP>
我的 XQuery
let $attr1 := "JUR"
let $attr2 := "startpage"
let $value1 := "ht"
let $value2 := "174"
let $uri := //PP[P[@name=$attr1 and @value=$value1] and P[@name=$attr2 and @value=$value2]]/@uri
return $uri
当 $attr1 值为 jur 时,查询运行成功,但我想提供大写或小写的值。请让我知道任何选项。
注意:更改排序规则后,cts 搜索可同时使用大写和小写字母,但 XPath 查询不起作用。
建议你了解排序规则的使用:
https://docs.marklogic.com/6.0/guide/search-dev/encodings_collations
要解决问题的 XPath 部分,您可以进行不区分大小写的匹配。
let $attr1 := "JUR"
let $attr2 := "startpage"
let $value1 := "ht"
let $value2 := "174"
let $uri := //PP[P[fn:matches(@name, $attr1, "i") and @value=$value1] and
P[@name=$attr2 and @value=$value2]]/@uri
return $uri
我预计这会稍微慢一些,但无论大小写都会匹配。
您好,我在 MarkLogic 中使用了 cts 搜索和 XPath 查询,而且我使用了不止一个参数。我需要捕获大写字符和小字符(在 XML 搜索中)。
样本XML
<PP uri="/2000_4_174.xml">
<P name="jur" value="ht"/>
<P name="sitting" value="17 AUGUST"/>
<P name="startpage" value="174"/>
</PP>
我的 XQuery
let $attr1 := "JUR"
let $attr2 := "startpage"
let $value1 := "ht"
let $value2 := "174"
let $uri := //PP[P[@name=$attr1 and @value=$value1] and P[@name=$attr2 and @value=$value2]]/@uri
return $uri
当 $attr1 值为 jur 时,查询运行成功,但我想提供大写或小写的值。请让我知道任何选项。
注意:更改排序规则后,cts 搜索可同时使用大写和小写字母,但 XPath 查询不起作用。
建议你了解排序规则的使用:
https://docs.marklogic.com/6.0/guide/search-dev/encodings_collations
要解决问题的 XPath 部分,您可以进行不区分大小写的匹配。
let $attr1 := "JUR"
let $attr2 := "startpage"
let $value1 := "ht"
let $value2 := "174"
let $uri := //PP[P[fn:matches(@name, $attr1, "i") and @value=$value1] and
P[@name=$attr2 and @value=$value2]]/@uri
return $uri
我预计这会稍微慢一些,但无论大小写都会匹配。