【问题标题】:How to perform a case-insensitive match in MarkLogic 6如何在 MarkLogic 6 中执行不区分大小写的匹配
【发布时间】:2016-05-17 09:24:36
【问题描述】:

您好,我在 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 查询不起作用。

【问题讨论】:

  • 显示一些示例代码和输入会让你更清楚你到底想要什么..

标签: xpath xquery marklogic


【解决方案1】:

要解决 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

我希望这会稍微慢一些,但无论如何它都会匹配。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我已经更改了排序规则 (marklogic.com/collation/en/S1),特别是单词词典中的 DB,我已经动态传递了属性名称和值,值只能使用大写字母和小写字母,但属性名称不起作用可以吗请问我这边有什么问题吗?
    • 我认为您需要提供更多详细信息以获得更多帮助。查询样本、数据样本、设置等。
    • 我已经为您提供了示例 xml 和 Xquery。
    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2017-11-14
    • 2012-03-15
    相关资源
    最近更新 更多