Поиск по диапазону дат в поиске Cloudant Lucene?

В документе json у нас есть дата начала и дата окончания.

Например: {"дата начала": "2014-12-05","конечная дата":"2015-03-15"}

Я хочу получить записи, существующие между диапазоном даты начала и даты окончания. Как реализовать вышеприведенный сценарий в поиске Cloudant Lucene?

Пожалуйста, помогите мне.


person Gnana Soundari    schedule 21.01.2015    source источник


Ответы (2)


Вот быстрый ответ, который я не тестировал...

Если вы храните даты как целые числа:

20141205
20150315

Вы должны иметь возможность выполнять запросы диапазона для этих значений. Вот фрагмент из онлайн-документации:

Вы также можете выполнять запросы фасетов диапазона для числовых фасетов, используя параметр ranges=. Например;

?q=*:*&ranges={"price":{"cheap":"[0 TO 100]","expensive":"{100 TO Infinity}"}}

Источник: https://cloudant.com/for-developers/search/

ОБНОВЛЕНИЕ:

Поиск по диапазону должен по-прежнему работать, даже если вы сохраните исходный формат даты (гггг-мм-дд).

person Chris Snow    schedule 21.01.2015
comment
Разве это не просто возвращает COUNTS документов в этих диапазонах, а не фактические документы: возвращает количество результатов, которые соответствуют каждой указанной категории: docs.cloudant.com/search.html#faceting - person Maarten; 20.09.2015
comment
Кроме того: The range operation works only if the indexed values are numbers. - person Maarten; 20.09.2015

Если вы не храните даты в виде целых чисел, что должно быть идеальным сценарием, вот как вы должны это сделать в cloudant

1) Отредактируйте свой поисковый индекс, чтобы использовать анализатор KEYWORD, а затем вы также можете передавать даты

?q=field_name:["2015-08-17" TO "2015-08-18"]

Лично я использую несколько анализаторов, стандартный для остальных полей и ключевое слово для полей даты в cloudant

person The_Lost_Avatar    schedule 30.09.2015
comment
Благодарю вас! это было очень полезно - person Kyle C; 20.06.2016