Решено многозначное поле даты, диапазон запросов соответствует «любому» / «количеству»? - PullRequest
2 голосов
/ 06 мая 2011

Я использую Solr как часть механизма бронирования недвижимости - в моих записях есть многозначное поле даты, в котором хранятся даты, когда свойство уже забронировано, и, следовательно, недоступно. Я хочу иметь возможность запрашивать это и возвращать записи, у которых нет дат в указанном окне.

Я на полпути - но сейчас Солр, кажется, возвращает запись, если у нее есть хотя бы одна свободная дата - я хочу, чтобы она возвращала только записи, которые полностью пусты в пределах диапазона. Пример моей сущности:

<doc>
    <arr name="DateBlockDates">
        <date>2011-02-25T00:00:00Z</date>
        <date>2011-02-26T00:00:00Z</date>
        <date>2011-02-27T00:00:00Z</date>
    </arr>
</doc>

Запрос отлично работает в этом случае:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-27T00:00:00Z]

Потому что у сущности есть блоки даты для каждого из этих дней. Однако, когда я бегу:

-DateBlockDates:[2011-02-25T00:00:00Z TO 2011-02-28T00:00:00Z]

Объект возвращается, поскольку у него нет записи на 2011-02-28.

Чтобы поместить мой вопрос в SQL старой школы, я хочу сделать "count (DateBlockDates) = 0". Есть идеи?

1 Ответ

2 голосов
/ 06 мая 2011

Это лучшее решение, которое я придумал - не использовать диапазон для запроса даты, а вместо этого использовать:

-DateBlockDates:"2011-02-25T00:00:00.000Z"
AND -DateBlockDates:"2011-02-26T00:00:00.000Z"
AND -DateBlockDates:"2011-02-27T00:00:00.000Z"
AND -DateBlockDates:"2011-02-28T00:00:00.000Z"

Это грязно, но работает. К счастью, я буду иметь дело с относительно небольшими диапазонами дат, поэтому запрос не будет слишком длинным. Но если есть лучшее решение, я бы хотел услышать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...