Как запросить Marklogic с помощью чувствительных к пунктуации терминов, используя JAVA?

У меня есть следующая информация, хранящаяся в 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";

Я попробовал 2 метода, и ни один, кажется, не работает.

Способ 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 ответ

Работа с датами часто проще и эффективнее, если вы индексируете свойство как дату. Таким образом, вы можете делать до и после матчей на дату, а также сортировать по дате.

Чтобы проиндексировать свойство как дату, вы можете создать индекс диапазона по дате. Затем вы можете использовать запрос диапазона на дату.

В MarkLogic 9 вы также можете использовать TDE для проецирования строк из документов со столбцом для дат.

Надеюсь, что это помогает,

Другие вопросы по тегам