Cts:contains()在marklogic 7中没有按预期工作



我在应用程序的许多功能中使用了cts:contains()。当我迁移到ML-7时,cts:contains()的大部分地方都没有像预期的那样工作。在许多情况下,我正在执行第一个参数的xdmp:quote()以获得所需的结果,但我仍然认为这不是一个有效的修复。另外,在其他情况下,我在cts:contains中使用cts:reverse-query,这是不可能的。是否有解决这个问题的方法,或者我需要在所有的cts: contains事件上重新工作?在Marklogic 7中是否有关于API变化的文档?

安装指南:http://docs.marklogic.com/guide/relnotes

cts:的文档包含"在检查匹配之前原子值被转换为文本节点"的注意。所以xdmp:unquote的结果不太可能是你想要的。您将测试包含序列化XML的文本节点,而不是测试原始XML节点。

以下是文档中cts:containscts: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))

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

Mike。谢谢你的建议。此问题已作为Marklogic 7.0.2.2版本的一部分解决。

最新更新