MarkLogic未筛选的变音搜索未按预期工作
我正在使用ML8MarkLogic未筛选的变音搜索未按预期工作,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设置
未筛选的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'
)