6

我是 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 存储时间,这是我要索引的查询,

选择 id,text,'language',links,tweetType,source,location,bio,url,utcOffset,timeZone,frenCnt,createdAt,createdOnGMT,createdOnServerTime,follCnt,favCnt,totStatusCnt,usrCrtDate,humanSentiment,replied,replyMsg,classified,locationDetail , geonameid,country,continent,placeLongitude,placeLatitude,listedCnt,hashtag,mentions,senderInfScr, createdOnGMTDate,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+00:00','+05:30'),'%Y-%m-% d') as IST,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+00:00','+01:00'),'%Y-%m-%d') as ECT,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+00 :00','+02:00'),'%Y-%m-%d') as EET,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+00:00','+03:30'),'%Y -%m-%d') 作为 MET,符号(分类)作为情绪来自

为什么我要进行此时区转换是因为我需要按用户时区对结果进行分组。我怎样才能做到这一点?

问候, 罗希特

4

2 回答 2

16

Solr 日期必须采用1995-12-31T23:59:59Z. 你只给出日期部分,而不是时间。

有关更多详细信息,请参阅DateField javadocs

于 2011-05-05T17:49:21.383 回答
-2

日期分面完全由查询参数驱动,因此,如果我们使用事件发生的“真实”时间(格式化为 UTC 字符串)索引您的事件,您可以使用用户指定的任何时区偏移量选择日期范围查询时间作为 UTC 偏移量。

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

这将返回用户时区的结果,实际上不需要对查询进行时区转换并单独索引该列。

问候, 罗希特

信用答案:Chris Hostetter(Solr 用户组)

于 2011-05-10T18:11:47.070 回答