MarkLogic 版本 9.0-6.2
我需要在一个数组中接受输入(比如说 PolicyId)并返回集合中与 PolicyIds 列表匹配的所有文档。在 PolicyId 上创建了一个元素范围索引,我可以使用以下查询来执行此操作。代码按预期工作。
const PolList = ["pol1","pol2","pol3"]
cts.search(
cts.jsonPropertyRangeQuery("RegistrationId", "=",PolList)
)
现在,我正在尝试对搜索 API (search.search) 做同样的事情。我创建了一个选项文件并部署到模块数据库
{
"options":
{
"search-option": "unfiltered",
"additional-query":[
"<collection-query xmlns='http://marklogic.com/cts'>
<uri>registration</uri>
</collection-query>"
],
"constraint": [
{
"name": "policyId",
"range": {
"type": "xs:string",
"collation" : "http://marklogic.com/collation/codepoint",
"element": {"name": "PolicyId" }
}
}
],
"extract-document-data":
{
"selected": "all"
}
}
}
然后我使用下面的代码来获取文件。
const SearchOptions = fn.head(xdmp.invokeFunction(
function() {
return fn.doc("/Default/data-hub-FINAL/rest-
api/options/PolicyId.xml");
},
{
'database': xdmp.database('data-hub-MODULES')
}));
const result = fn.head(search.search('PolicyId:'+PolicyId,
SearchOptions.firstChild)).xpath('search:result/search:extracted/data()',
{'search': 'http://marklogic.com/appservices/search'});
此代码适用于单个 PolicyId。我如何传递一组 PolicyId 并使其工作?我想通过一个数据库调用来获取所有文档。