我是solr的新手,这是我第一次尝试索引solr数据,我在索引时得到以下异常,
org.apache.solr.common.SolrException:无效的日期字符串:在org.apache.solr.schema.TrieDateField的org.apache.solr.schema.DateField.parseMath(DateField.java:165)中的'2011-01-07' .orgateField(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,文本,'language',链接,tweetType,source,location,bio,url,utcOffset,timeZone,frenCnt,createdAt,createdOnGMT,createdOnServerTime,follCnt,favCnt,totStatusCnt,usrCrtDate,humanSentiment,replyly,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')作为IST,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+ 00:00','+ 01:00'),'%Y-%m-%d')为ECT,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+ 00) :00','+ 02:00'),'%Y-%m-%d')为EET,DATE_FORMAT(CONVERT_TZ(createdOnGMTDate,'+ 00:00','+ 03:30'),'%Y - %m-%d')作为MET,签名(分类)为来自的情绪
我为什么要进行此时区转换是因为我需要按用户时区对结果进行分组.我怎样才能实现这一目标?
此致,罗希特
Mau*_*fer 16
Solr日期必须在表格中1995-12-31T23:59:59Z.你只提供日期部分,而不是时间.
有关更多详细信息,请参阅DateField javadocs.
ses*_*mic -2
日期分面完全由查询参数驱动,因此,如果我们使用事件发生的“真实”时间(格式为 UTC 中的字符串)对事件进行索引,则您可以使用用户指定的任何时区偏移量来选择日期范围以 UTC 偏移量表示的查询时间。
facet.range = dateField
facet.range.start = 2011-01-01T00:00:00Z+${useroffset}MINUTES
facet.range.gap = +1DAY
Run Code Online (Sandbox Code Playgroud)
这将返回用户时区的结果,实际上不需要对查询进行时区转换并单独对该列建立索引。
问候, 罗希特
回答者:Chris Hostetter(Solr 用户组)
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           9704 次  |  
        
|   最近记录:  |