2016-01-06 3 views
0

Я пишу приложение для планирования врачей. Врач - это объект Java, имеющий идентификатор, имя и коллекцию плановых заданий. Планирование описывается {start_date, end_date, planning_type}. Даты отформатированы как ГГГГ-ММ-ДД. Теперь рассмотрим доктора, имеющие два диапазона планирования: (Нажмите на «запустить фрагмент кода» код, чтобы увидеть планирования как HTML таблицы)Диапазон дат Lucene с множественными вхождениями

<table border="1"> 
 
<tr><th>start_date</th><th>end_date</th><th>type</th></tr> 
 
<tr><td>2016-01-01</td><td>2015-01-05</td><td>night</td></tr> 
 
<tr><td>2016-01-11</td><td>2015-01-15</td><td>night</td></tr> 
 
</table>

Если мы попытаемся проверить, если это врач работает в 2016-01-07, например, запрос должен выглядеть следующим образом:

+planning.start_date:[0 TO "2016-01-07"] +planning.end_date:["2016-01-07" TO A] 

Этот запрос возвращает доктора в наборе результатов, хотя это не так. На самом деле врач А не будет работать, но из-за того, что Lucene хранит коллекции, этот запрос соответствует доктору А.

Есть ли способ (включая добавление дополнительных полей, ....), чтобы это работало как ожидается?

Заранее спасибо.

+0

Один уродливый способ справиться с этим - добавить еще одно поле (enumDate) и перечислить все дни во всех интервалах. Тогда запрос будет: (+ planning.enumDate: «2016-01-07») Любое другое предложение приветствуется :) – SBA

ответ

0

Как получить документ Lucene для каждого планирования вместо каждого врача?

+0

Я не вижу, как это может решить проблему. Не могли бы вы предложить свое предложение? – SBA

+0

только в вашем примере в lucene будут сохранены два документа: 'врач: X от: 2016-01-01 до: 2015-01-05 тип: ночной ' врач: X от: 2016-01- 11 до: 2015-01-15 Тип: ночной поэтому запрос 'planning.start_date: [0 TO" 2016-01-07 "] + planning.end_date: [" 2016-01-07 "TO A] ' не соответствует ни одному из документов –

 Смежные вопросы

  • Нет связанных вопросов^_^