首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不区分大小写的未过滤搜索返回MarkLogic中的错误结果

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

Stack Overflow用户
提问于 2017-07-18 14:10:15
回答 1查看 93关注 0票数 2

似乎存在一个与unfilteredcase-sensitive搜索相关的问题。

我正在运行一个element-value-querycase-sensitive选项。

unfiltered cts搜索返回了错误的结果。

下面的代码片段显示了错误的行为。

案例1:

代码语言:javascript
复制
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

Expected:它不应该返回

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

所以我试了下一个,但没有收获。

案例2:

代码语言:javascript
复制
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的

Expected:它不应该返回

它是MarkLogic中的一个bug,还是预期的行为。我很想知道原因。

注释: fast case sensitive searches & fast diacritic sensitive searches两个索引都设置为true

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 16:18:21

这与上面提到的情况有些不同。

索引分辨率取决于通用索引中的键匹配。结果显示,"Dixit“的大小写不敏感键与"dixit”的区分大小写键相同,因为计算不区分大小写的键的方法是计算单词的小写形式的键。因此,在比较键时,有一个键匹配区分大小写的"dixit“,因此索引返回一个匹配项。索引解析可以准确地要求查询中的大写词只匹配文档中的大写单词,而不要求查询中的小写单词只匹配文档中的小写单词。你需要过滤才能得到准确的结果。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45169235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档