MarkLogic未筛选的变音搜索未按预期工作

MarkLogic未筛选的变音搜索未按预期工作,marklogic,marklogic-8,Marklogic,Marklogic 8,我正在使用ML8 未筛选的cts:search对于变音符号cts:query而言,未按预期工作 找到下面的例子 我已经在ML DB中插入了以下xml,uri/diacritic/a.xml <root> <name>öily</name> </root> 上面的cts:query正在将上面的文档返回给我,但不应返回,因为存在区分重音的选项 对于过滤的搜索,它工作正常 注意:fast-diacritic-sensitive search设置

我正在使用ML8

未筛选的cts:search
对于
变音符号
cts:query
而言,未按预期工作

找到下面的例子

我已经在ML DB中插入了以下xml,uri
/diacritic/a.xml

<root>
    <name>öily</name>
</root>
上面的cts:query正在将上面的文档返回给我,但不应返回,因为存在
区分重音的
选项

对于
过滤的
搜索,它工作正常

注意:
fast-diacritic-sensitive search
设置为true


请提供帮助。

排序规则与搜索无关(范围查询除外)

这里的问题是索引是如何工作的。这些键不知道它们是不区分重音的键,它们只知道键中的字符是什么。为了计算一个单词的不区分重音的键,我们去掉了重音并从剩下的单词中形成一个键。要计算一个单词的变音敏感键,我们不会删除变音键,并从单词中完整地生成一个键

在本例中,变音不敏感键(oily)=变音敏感键(oily)=变音不敏感键(oily)!=变音敏感键

所以索引不能解决这里的差异。对öily进行区分重音的搜索与索引中的oily不匹配,但反之则不然

要在此处获得准确的结果,您需要进行筛选


附录:为什么我们不把变音敏感度包括在键中?因为这将大大增加索引的大小(x2表示变音符号,x2表示大小写)。

请同时公布数据库的排序规则设置。您的查询假定一个默认值,该默认值是在数据库本身上设置的,或者使用MarkLogic的默认排序规则。了解这一点将有助于人们形成一个合适的答案。我不确定在哪里可以设置数据库的排序规则
fn:默认排序规则
已返回我
http://marklogic.com/collation/
请让我知道这是否正确,或者您需要关于这一点的更多详细信息。我认为您需要查看此部分以了解排序规则及其对搜索分辨率的影响:我不会将此作为答案发布,因为这可能不是问题所在。但我认为你需要一些背景来调查和报告上述情况。
cts:search(
    doc('/diacritic/a.xml'),
    cts:element-value-query(xs:QName('name'), 'oily', ('diacritic-sensitive')),
    'unfiltered'
)