如何在 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

我预计这会稍微慢一些,但无论大小写都会匹配。