【发布时间】:2017-10-23 09:20:36
【问题描述】:
我正在使用 MarkLogic Java API。我希望搜索某个字符串以仅返回该字符串与文档中的某个键完全匹配的文档。我明确地只想搜索字符串,我不想指定这个字符串必须提前匹配的键。
示例 1:
DatabaseClient client = DatabaseClientFactory.newClient(Config.host, Config.port, new DigestAuthContext(Config.user, Config.password));
QueryManager queryMgr = client.newQueryManager();
queryMgr.setPageLength(100);
// create a search definition
StringQueryDefinition query = queryMgr.newStringDefinition();
// Search for the term
query.setCriteria("2017");
SearchHandle resultsHandle = new SearchHandle();
// run the search
queryMgr.search(query, resultsHandle);
本例中搜索“2017”也会返回以下形式的文档:
{"Example1":{"key1":"bla", "key2":"2017-10-12T15:37:53.204Z"}}
它应该只返回这样的文件:
{"Example1":{"key1":"bla", "key2":"2017"}}
我还尝试了以下方法。例 2:
DatabaseClient client = DatabaseClientFactory.newClient(Config.host, Config.port, new DigestAuthContext(Config.user, Config.password));
QueryManager queryMgr = client.newQueryManager();
queryMgr.setPageLength(100);
// create a search definition
StructuredQueryBuilder qb = new StructuredQueryBuilder();
StructuredQueryDefinition query = qb.term( "2017");
SearchHandle resultsHandle = new SearchHandle();
// run the search
queryMgr.search(query, resultsHandle);
我尝试用\"\" 封装上面两个示例中的搜索词,例如"\"2017\""。那里也没有运气。
【问题讨论】: