Денормализация и поиск диапазонов дат в Solr - PullRequest
0 голосов
/ 09 января 2012

Мне нужно вернуть документы из Solr, которые по существу имеют «периоды затемнения».

Итак, мне нужно вернуть все документы, у которых нет периода затемнения, определенного для переданного диапазона дат.

В настоящее время я все еще прорабатываю «фазу разработки схемы», но хочу убедиться, что то, что я пытаюсь выполнить, возможно и логично с Solr (как только Join станет доступным, кажется, что это будетбыть тривиальным, но до тех пор ...)

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

<doc>
  <field name="id">1</field>
  <field name="name">My Item Name</field>
  <field name="unavailableDateRange">1/23/2012-1/27/2012</field>
  <field name="unavailableDateRange">3/14/2012-3/19/2012</field>
</doc>
<doc>
  <field name="id">2</field>
  <field name="name">My Item Name</field>
  <field name="unavailableDateRange">2/15/2012-2/20/2012</field>
</doc>

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

Так что, при поиске элементов, я хотел бы вернуть только элементы, которыедоступны в запрошенное время.

Пример: если были переданы даты с 13.02.2012 по 16.02.2012, элемент 1 будет возвращен, а пункт 2 - нет.

Мои вопросы: - Это то, что Solr поддерживает с возможностями запроса диапазона дат?- Есть ли какие-либо проблемы с производительностью, о которых я должен знать здесь?

Заранее благодарим вас за любые идеи, которые вы можете предоставить.

1 Ответ

1 голос
/ 10 января 2012

Solr очень хорошо поддерживает даты. Вы можете использовать запросы диапазона, как и в любых других полях: SolrQuerySyntax Однако поле должно быть одной датой, а не самим диапазоном дат.

Для вашей ситуации я бы перечислял в поле unavailableDateRange каждый день, который должен находиться в диапазоне (многозначное поле). Индекс не должен быть намного больше, и легко внедрить бота для индексации и запросов.

Пример запроса:

./select/?q=NOT unavailableDateRange:[2012-02-13T00:00:00Z TO 2012-02-16T00:00:00Z]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...