我正在使用ML 8。
unfiltered cts:search
无法正常使用diacritic
cts:query
。
找到以下示例。
我已使用uri /diacritic/a.xml
<root>
<name>öily</name>
</root>
cts:search
查询我正在运行。
cts:search(
doc('/diacritic/a.xml'),
cts:element-value-query(xs:QName('name'), 'oily', ('diacritic-sensitive')),
'unfiltered'
)
高于cts:查询返回上面的文档,但它不应该返回,因为diacritic-sensitive
选项存在。
对于filtered
搜索,它运行正常。
注意:fast diacritic sensitive searches
设置为true
请帮忙。
答案 0 :(得分:1)
排序与搜索无关(范围查询除外)。
这里的问题是索引的工作原理。密钥不知道它们是变音符号不敏感的密钥,它们只知道密钥中的字符是什么。为了计算单词的变音符号不敏感键,我们删除变音符号并从剩下的内容中形成一个键。要计算单词的变音符号敏感键,我们不会删除变音符号并从单词中形成一个完整的键。
在这种情况下,变音符号不敏感键(油性)=变音符号敏感键(油性)=变音符号不敏感键(öily)!=变音符号敏感键(öily)。
所以索引无法解决这里的差异。对öily的变音符号敏感搜索在索引中与油性不匹配,但反之则不然。
要在此处获得准确的结果,您需要进行过滤。
附录:为什么我们不将变音符号敏感度包含在键中?因为这会大大增加索引的大小(变音符号为x2,大小写为x2)。