Solr: org.apache.solr.common.SolrException: неверная строка даты: - PullRequest
6 голосов
/ 05 мая 2011

Я новичок в solr, и это моя первая попытка индексировать данные solr. При индексировании я получаю следующее исключение:

org.apache.solr.common.SolrException: недопустимая строка даты: '2011-01-07' в org.apache.solr.schema.DateField.parseMath (DateField.java:165) в org.apache.solr.schema.TrieDateField.createField (TrieDateField.java:169) в org.apache.solr.schema.SchemaField.createField (SchemaField.java:98) в org.apache.solr.update.DocumentBuilder.addField (DocumentBuilder.java:204) в org.apache.solr.update.DocumentBuilder.toDocument (DocumentBuilder.java:277)

Из некоторых статей я понимаю, что Solr хранит время только в UTC, это запрос, который я пытаюсь проиндексировать,

Выберите идентификатор, текст, «язык», ссылки, tweetType, источник, местоположение, биографию, URL, utcOffset, timeZone, frenCnt, createAt, creationOnGMT, creationOnServerTime, follCnt, favCnt, totStatusCnt, usrCrtDate, humanSentig классифицировано, locationDetail, geonameid, страна, континент, placeLongitude, placeLatitude, namedCnt, хэштег, упоминания, senderInfScr, creationOnGMTDate, DATE_FORMAT (CONVERT_TZ (создалOnGMTDate, '+ 00:00', '+ 05:30'), '% Y-% m-% d ') в качестве IST, DATE_FORMAT (CONVERT_TZ (creationOnGMTDate,' + 00:00 ',' + 01:00 '),'% Y-% m-% d ') в качестве ECT, DATE_FORMAT (CONVERT_TZ (creatOnGMTDate, '+00: 00', '+ 02:00'), '% Y-% m-% d') как EET, DATE_FORMAT (CONVERT_TZ (creationOnGMTDate, '+ 00:00', '+ 03:30'), «% Y-% m-% d») как MET, знак (классифицированный) как настроение от

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

С уважением, Рохит

Ответы [ 2 ]

16 голосов
/ 05 мая 2011

Solr даты должны быть в форме 1995-12-31T23:59:59Z.Вы даете только часть даты, но не время.

Подробнее см. DateField .

0 голосов
/ 10 мая 2011

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

facet.range = dateField
facet.range.start = 2011-01-01T00:00:00Z+${useroffset}MINUTES
facet.range.gap = +1DAY

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

С уважением, Рохит

Кредит за ответ: Крис Хостеттер (группа пользователей Solr)

...