Solr Многозначный диапазон дат из двух отдельных полей в качестве подсущности

Я новичок в Apache Solr. Мой data-config.xml содержит этот код

<entity name="event">                        
<field column="event_id" name="id" />
...
<entity name="request_history" query="select request_date, request_expiry_date from request_history where id=event.id">
   <field column="request_date" name="start_date" />
   <field column="request_expiry_date" name="expire_date" />
</entity>

И вот что в файле shcema.xml для этих полей

<field name="start_date" type="tdate" indexed="true" stored="true" multiValued="true"/>
<field name="expire_date" type="tdate" indexed="true" stored="true" multiValued="true"/>

Таким образом, для одного события может быть несколько запросов, следовательно, несколько «start_date» и «expire_date». Теперь мне нужно найти все запросы в пределах диапазона дат и все запросы не в заданном диапазоне дат, но никак не получить.


person Sadat    schedule 15.07.2013    source источник
comment
fq=start_date:[СЕЙЧАС ДО ] И expire_date:[ ДО СЕЙЧАС] будет фильтровать результаты. Однако проблема с совпадением даты окончания с датой начала???   -  person Jayendra    schedule 15.07.2013
comment
да @Jayendra, на самом деле это главная проблема   -  person Sadat    schedule 15.07.2013


Ответы (2)


Индексируйте дату начала и истечения срока действия как отдельные многозначные поля в соответствии с событием, например. event_date. Вместо того, чтобы объединять их всего в два поля.
Чтобы каждое событие имело запись для даты начала и окончания срока действия, а запрос fq=start_date:[NOW TO *] AND expire_date:[* TO NOW] работал нормально для вас.
Сделайте поле динамическим, чтобы вы не нужно настроить.

person Jayendra    schedule 15.07.2013
comment
Здесь предлагаются даты запроса даты организации этого мероприятия. Поэтому у меня нет начальной даты мероприятия. - person Sadat; 15.07.2013
comment
вы можете поддерживать событие и использовать частичные обновления Solr для вставки дат по мере создания события. - person Jayendra; 15.07.2013

Я нашел очень простой способ решить проблему, альхамдулиллях. Это простой шаблон запроса -

-(start_date: [2013-07-01T0:00:00Z TO 2013-07-18T0:00:00Z] AND end_date: [2013-07-01T0:00:00Z TO 2013-07-18T0:00:00Z]) 

Это делает то, что мне действительно нужно.

person Sadat    schedule 18.07.2013