【发布时间】:2014-01-28 13:27:03
【问题描述】:
我们需要使用 Marklogic 的 REST api 将 MarkLogic 搜索限制为托管文档的最新版本。我们正在使用 MarkLogic 6。
使用直接 xquery,您可以使用 dls:documents-query() 作为附加查询选项(请参阅
Is there any way to restrict marklogic search on specific version of the document)。
但是 REST api 需要 XML,而不是任意的 xquery。您可以轻松地将普通的 cts 查询转换为 XML(在 QConsole 中执行 <some-element>{cts:word-query("hello world")}</some-element>)。
如果我用dls:documents-query() 试试,我会得到:
<cts:properties-query xmlns:cts="http://marklogic.com/cts">
<cts:registered-query>
<cts:id>17524193535823153377</cts:id>
</cts:registered-query>
</cts:properties-query>
除了不完全透明之外……这个数字有多安全?我们需要把它放在我们的查询选项中,所以它不是我们每次需要时都可以重新生成的东西。我在这里查看了两个不同的安装,并且数字相同,但可以保证相同,并且会改变吗?例如,MarkLogic 升级?
另外,假设号码是安全的,注册查询会一直存在吗?文档说注册查询可能会在不同时间被系统清除,但它是在谈论用户定义的注册查询,我不确定其中有多少适用于内部查询。
这甚至是正确的方法吗?如果我们做不到这一点,我们总是可以设置集合并限制搜索,但如果可能的话,我们宁愿使用dls:documents-query。
【问题讨论】: