xml - 不区分大小写,未过滤的搜索在 MarkLogic 中返回错误结果

标签 xml marklogic

似乎存在与未过滤区分大小写搜索相关的问题。

我正在运行带有区分大小写选项的element-value-query

未过滤的 cts 搜索返回了错误的结果。

以下代码片段表现出错误的行为。

情况1:

xdmp:document-insert('/a.xml', <a><name>Dixit</name></a>);

cts:search(
  doc('/a.xml'),
  cts:element-value-query(xs:QName('name'), 'dixit','case-sensitive'),
  'unfiltered'
);

输出:返回插入的 xml

预期:它不应返回

在这里,我认为在索引中,键 Dixit 等于“dixit”,因此返回 XML。

所以我尝试了下面的方法,但没有收获。

情况2:

xdmp:document-insert('/a.xml', <a><name>Dixit singla</name></a>);

cts:search(
  doc('/a.xml'),
  cts:element-value-query(xs:QName('name'), 'dixit singla','case-sensitive'),
  'unfiltered'
);

输出:返回插入的xml

预期:它不应返回

这是 MarkLogic 中的错误还是这是预期的行为。 我很想知道原因。

注意: 快速区分大小写的搜索快速区分变音符号的搜索两个索引都设置为true

最佳答案

这与上面提到的问题有些不同。

索引解析取决于通用索引中的键匹配。事实证明,“Dixit”的不区分大小写键与“dixit”的区分大小写键相同,因为计算不区分大小写键的方式是计算单词小写形式的键。因此,在我们比较键时,有一个键与区分大小写的“dixit”匹配,因此索引返回匹配项。索引解析可以准确地要求查询中的大写单词仅与文档中的大写单词匹配,但不要求查询中的小写单词仅与文档中的小写单词匹配。您需要在此处进行过滤才能获得准确的结果。

关于xml - 不区分大小写,未过滤的搜索在 MarkLogic 中返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169235/

相关文章:

java - 使用集合将 xml 解码为 bean

xquery - 从 xdmp :http-get() 访问 HTTP 响应

java - XMLConstants.FEATURE_SECURE_PROCESSING 无法禁用

类声明前的 C# XML 序列化属性

odbc - 无法通过 CentO 上的 ODBC 连接到 MarkLogic

marklogic - 使用 mlcp 加载数据 - 命名空间问题

marklogic - 如何从marklogic中的xml文档中获取json结果

marklogic - 下载文件,文件名

java - 将两个 ImageView 放在另一个 ImageView 之上

java - 一个模式不能包含两个同名的全局组件