似乎存在与未过滤
和区分大小写
搜索相关的问题。
我正在运行带有区分大小写
选项的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/