MarkLogic 服务器端API、Javascript、cts.search,仅在特定节点中搜索
MarkLogic server side API, Javascript, cts.search, search only in specific nodes
在 Marklogic XQuery 服务器端 API 可以通过以下方式 运行 cts.search
方法:
cts:search(//SPEECH,
cts:word-query("with flowers"))
=> ... a sequence of 'SPEECH' element ancestors (or self)
of any node containing the phrase 'with flowers'.
我的问题是,使用Javascript API是否可以达到这样的结果?即,能够 运行 仅在特定的根级节点上进行单词查询(因为数据库托管了几种不同的文档类型)。
(因为我提到的节点将是根节点,使用elementwordquery
似乎不是实现目标的便捷方法)。
在 cts.search
there is no expression parameter as with the XQuery API. To search for words within a specific element and its text descendants, you can use a cts.elementWordQuery
的 JavaScript 版本中。例如,
var resultsIterator = cts.search(cts.elementWordQuery(xs.QName('SPEECH'), 'with flowers'));
for(var doc of resultsIterator) {
// …
}
这将遍历每个文档。要获得包含的 SPEECH
元素,您可以在 for…of
循环中使用 doc.xpath('//SPEECH')
。
与其仅仅依赖根元素作为文档类型标识符,我建议使用集合来管理类似类型的文档组。如果您管理的 JSON 文档尤其如此,这些文档通常没有“根元素”的概念。
var resultsIterator = cts.search(cts.andQuery([
cts.collectionQuery('Speeches'),
cts.wordQuery('with flowers')
]));
for(var doc of resultsIterator) {
// …
}
在 Marklogic XQuery 服务器端 API 可以通过以下方式 运行 cts.search
方法:
cts:search(//SPEECH,
cts:word-query("with flowers"))
=> ... a sequence of 'SPEECH' element ancestors (or self)
of any node containing the phrase 'with flowers'.
我的问题是,使用Javascript API是否可以达到这样的结果?即,能够 运行 仅在特定的根级节点上进行单词查询(因为数据库托管了几种不同的文档类型)。
(因为我提到的节点将是根节点,使用elementwordquery
似乎不是实现目标的便捷方法)。
在 cts.search
there is no expression parameter as with the XQuery API. To search for words within a specific element and its text descendants, you can use a cts.elementWordQuery
的 JavaScript 版本中。例如,
var resultsIterator = cts.search(cts.elementWordQuery(xs.QName('SPEECH'), 'with flowers'));
for(var doc of resultsIterator) {
// …
}
这将遍历每个文档。要获得包含的 SPEECH
元素,您可以在 for…of
循环中使用 doc.xpath('//SPEECH')
。
与其仅仅依赖根元素作为文档类型标识符,我建议使用集合来管理类似类型的文档组。如果您管理的 JSON 文档尤其如此,这些文档通常没有“根元素”的概念。
var resultsIterator = cts.search(cts.andQuery([
cts.collectionQuery('Speeches'),
cts.wordQuery('with flowers')
]));
for(var doc of resultsIterator) {
// …
}