Не удается получить ожидаемый документ из Solr при фильтрации по дате - PullRequest
1 голос
/ 09 февраля 2012

Я не могу получить документ от Solr. Я представил это так:

<add>
  <doc>
    <field name="id">1</field>
    <field name="date_online">2012-02-09T19:46:00Z</field>
  </doc>
</add>

Поле date_online заполняется текущей датой, его определение типа в schema.xml следующее:

<field name="date_online" type="tdate" indexed="true" stored="false" />

После того, как я отправил документ и выпустил команду фиксации, при поиске по q=*:* и fq=date_online:[* TO NOW/MINUTE] я не могу получить документ, который только что отправил. Конечно, должна быть проблема с датой, но я уже проверил время на сервере и правильно, более того, я также смог воспроизвести проблему локально.

Кто-нибудь знает, почему я не могу получить этот документ? Почему это не соответствует моему запросу?

1 Ответ

0 голосов
/ 10 февраля 2012

Проблема, конечно, была в дате!Я узнал, что могу получить документ только через час, поэтому я понял это.Solr использует UTC для времени, и я отправлял дату и время для своего фактического часового пояса (GMT + 1), поэтому я смог получить документ только через час.Фактически требуется преобразовать время в формат UTC, прежде чем отправлять его в Solr.

Скажем, например, сейчас 6 часов по Гринвичу + 1, для Solr это просто 5 часов (UTC).Если вы отправляете документ с полем даты, например, 2012-02-09T18:00:00Z (эта дата не содержит никакой информации о часовом поясе) для Solr, то это 6:00 UTC.Если вы отфильтруете эту дату, как я, вы увидите этот документ только через час.Правильный способ преобразования даты в UTC (в данном случае 2012-02-09T17:00:00Z) перед отправкой документа в Solr.

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