如何使用JAVA查询带有标点符号的Marklogic?

时间:2018-04-23 10:01:39

标签: java json marklogic punctuation

我在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管理员是否缺少某些设置来激活选项或标点符号敏感?

1 个答案:

答案 0 :(得分:1)

如果将属性编入索引作为日期,则使用日期通常会更容易,也更强大。这样,您可以在日期的匹配之前和之后进行,也可以对日期进行排序。

要将属性索引为日期,您可以在日期上创建范围索引。然后,您可以在日期使用范围查询。

在MarkLogic 9中,您还可以使用TDE从文档中投射行,并使用日期列。

希望有帮助,

相关问题