似乎存在一个与unfiltered和case-sensitive搜索相关的问题。
我正在运行一个element-value-query和case-sensitive选项。
unfiltered 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
Expected:它不应该返回
在这里,我认为在索引中,键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的
Expected:它不应该返回
它是MarkLogic中的一个bug,还是预期的行为。我很想知道原因。
注释: fast case sensitive searches & fast diacritic sensitive searches两个索引都设置为true。
发布于 2017-07-18 16:18:21
这与上面提到的情况有些不同。
索引分辨率取决于通用索引中的键匹配。结果显示,"Dixit“的大小写不敏感键与"dixit”的区分大小写键相同,因为计算不区分大小写的键的方法是计算单词的小写形式的键。因此,在比较键时,有一个键匹配区分大小写的"dixit“,因此索引返回一个匹配项。索引解析可以准确地要求查询中的大写词只匹配文档中的大写单词,而不要求查询中的小写单词只匹配文档中的小写单词。你需要过滤才能得到准确的结果。
https://stackoverflow.com/questions/45169235
复制相似问题