我在Marklogic中为json文件存储了以下信息,如下所示。
1.json>> "dateSubmitted" : "2017/10/11 09:15:14"
2.json>> "dateSubmitted" : "2017/10/11 10:13:14"
3.json>> "dateSubmitted" : "2017/10/14 11:12:13"
我的查询字词是:
String dateQuery = "2017/10/11";
我尝试了两种方法,但似乎都没有。
方法1:
StructuredQueryBuilder qb = new StructuredQueryBuilder();
QueryDefinition queryDef = qb.and(qb.word((qb.jsonProperty("dateSubmitted"),dateQuery)));
queryDef.setDirectory(DIRECTORY);
SearchHandle resultsHandle = new SearchHandle();
queryManager.search(queryDef, resultsHandle, start);
方法2:
StructuredQueryBuilder qb = new StructuredQueryBuilder();
String[] wordQueryOptions = {"punctuation-sensitive", "space-sensitive"};
QueryDefinition queryDef = qb.and(qb.word((qb.jsonProperty("dateSubmitted"),
FragmentScope.DOCUMENTS,
wordQueryOptions,100.0,dateQuery)));
queryDef.setDirectory(DIRECTORY);
SearchHandle resultsHandle = new SearchHandle();
queryManager.search(queryDef, resultsHandle, start);
预期的结果是只返回1.json和2.json。
但是3.json也被退回了。
我的Marklogic管理员是否缺少某些设置来激活选项或标点符号敏感?
答案 0 :(得分:1)
如果将属性编入索引作为日期,则使用日期通常会更容易,也更强大。这样,您可以在日期的匹配之前和之后进行,也可以对日期进行排序。
要将属性索引为日期,您可以在日期上创建范围索引。然后,您可以在日期使用范围查询。
在MarkLogic 9中,您还可以使用TDE从文档中投射行,并使用日期列。
希望有帮助,