2014-12-02 4 views
0

Моя схема уже это два подалиКак сравнить даты в solr?

<field name="startDate" type="date" indexed="true" stored="true"/> 
<field name="endDate" type="date" indexed="true" stored="true"/> 

мне нужно искать документы, в которых «текущее время» между начальной или конечной даты.

Каким будет запрос?

ответ

0

Строка запроса, без побега для ясности, может выглядеть следующим образом (с использованием синтаксиса Lucene парсер запросов):

?q=startDate:[* TO NOW]&endDate:[NOW TO *] 
0

Цитируется из https://wiki.apache.org/solr/SolrQuerySyntax

Если вы используете тип Solr "DateField", любой запросы на эти поля (обычно запросы диапазона) должны использовать либо синтаксис полного ISO 8601 Date, поддерживаемый этим полем, либо синтаксис DateMath для получения относительных дат. Примеры:

timestamp:[* TO NOW] 
createdate:[1976-03-06T23:59:59.999Z TO *] 
createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z] 
pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY] 
createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999Z+1YEAR] 
createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:59.999Z]