首页 > 解决方案 > Marklogic Java 客户端 API 标准不起作用

问题描述

我正在寻找集合中的所有文档,其中包含文档中存在的特定术语。所以,我正在使用以下代码结构:

StringQueryDefinition sqd = queryManager.newStringDefinition();
sqd.setCollections(collectionName);
sqd.setCriteria(searchTerm);

但我总是将结果计数为 0,但如果我删除标准,那么我将获得集合中的所有文档。

这种方法有什么问题,请告诉我。

标签: marklogicmarklogic-9

解决方案


我终于能够找到与命名空间约束相关的标签的答案:

//Create options for search:
String options= "<search:options xmlns:search='http://marklogic.com/appservices/search'>"+
"<search:constraint name='constraintname'>"+
"<search:value>"+
"<search:element name='elementname' ns='your-namespace'/>"+
"</search:value>"+
"</search:constraint>"+
"</search:options>";

//Write options to database
QueryOptionsManager optionsManager = client.newServerConfigManager().newQueryOptionsManager();
StringHandle writeHandle = new StringHandle(options);
optionsManager.writeOptions("OPTION_NAME", writeHandle);

//Create StructuredQueryBuilder with the options
StructuredQueryBuilder queryBuilder = queryManager.newStructuredQueryBuilder("OPTIONS_NAME");

//Create StructuredQueryDefinition using the query builder and specify constraint name and value.
StructuredQueryDefinition queryDefinition = queryBuilder.and(queryBuilder.valueConstraint("constraintname", value));
queryDefinition.setCollections(collectionName);

SearchHandle searchHandle = queryManager.search(queryDefinition, new SearchHandle());

推荐阅读