cts:contains()在marklogic 7中未按预期工作

cts:contains()在marklogic 7中未按预期工作,marklogic,Marklogic,在我的应用程序中,我在许多功能中使用了cts:contains()。当我迁移到ML-7时,cts:contains()的大多数位置都没有按预期工作。在许多情况下,我会对第一个参数执行xdmp:quote(),以获得所需的结果,但我仍然认为这不是一个有效的修复方法。同样在我在cts:contains内使用cts:reverse查询的其他情况下,这是不可能的。是否有解决此问题的方法,或者我需要对所有CT:contain事件进行返工?Marklogic 7中是否有此类API更改的文档?安装指南中有以前

在我的应用程序中,我在许多功能中使用了cts:contains()。当我迁移到ML-7时,cts:contains()的大多数位置都没有按预期工作。在许多情况下,我会对第一个参数执行xdmp:quote(),以获得所需的结果,但我仍然认为这不是一个有效的修复方法。同样在我在cts:contains内使用cts:reverse查询的其他情况下,这是不可能的。是否有解决此问题的方法,或者我需要对所有CT:contain事件进行返工?Marklogic 7中是否有此类API更改的文档?

安装指南中有以前版本的更改:

用于的文档注意到“在检查匹配之前,将原子值转换为文本节点”。因此,
xdmp:unquote
的结果不太可能达到您想要的效果。您应该测试包含序列化XML的文本节点,而不是测试原始XML节点

下面是一个来自的
cts:contains
cts:reverse query
的示例。这对我来说在7.0-2.2中运行良好,并按预期返回
true

let $query := <query>{cts:word-query("hello")}</query>
let $x := <bar>hello</bar>
return cts:contains($query, cts:reverse-query($x))
let$query:={cts:wordquery(“hello”)}
让$x:=你好
返回cts:contains($query,cts:reverse query($x))

一般来说,
cts:contains
会进行内存计算,不会很好地扩展。它对于处理数据库中不存在的单个内存中文档非常方便。但在大多数情况下,
cts:search
search:search
是更好的选择。

Mike。谢谢你的意见。此问题作为Marklogic 7.0.2.2版的一部分解决。早期的7.0.2.1版本存在此问题。

您有测试用例吗?显示您遇到的问题的Post代码。