2011-05-05 25 views
5

Soy nuevo en Solr y este es mi primer intento de datos de indexación Solr, me estoy haciendo la siguiente excepción, mientras que la indexación,Solr: org.apache.solr.common.SolrException: Fecha no válida de la secuencia:

org.apache.solr.common.SolrException: cadena de fecha no válida: '2011-01-07' en org.apache.solr.schema.DateField.parseMath (DateField.java:165) en org.apache.solr.schema .TrieDateField.createField (TrieDateField.java:169) en org.apache.solr.schema.SchemaField.createField (SchemaField.java:98) en org.apache.solr.update.DocumentBuilder.addField (DocumentBuilder.java:204) en org.apache.solr.update .DocumentBuilder.toDocument (DocumentBuilder.java:277)

entiendo de la lectura de algunos artículos que Solr almacena sólo en el tiempo UTC, esta es la consulta que estoy tratando de índice,

SELECT ID, texto, 'idioma', enlaces, tweetType, fuente, ubicación, bio, url, utcOffset, timeZone, frenCnt, createdAt, createdOnGMT, createdOnServerTime, follCnt, favCnt, totStatusCnt, usrCrtDate, humanSentiment, respondió, replyMsg, classified, locationDetail, geonameid, país, continente, placeLongitude, placeLatitude, listedCnt, hashtag, mentions, senderInfScr, createdOnGMTDate, DATE_FORMAT (CONVERT_TZ (createdOnGMTDate, '+ 00:00', '+ 05:30'), '% Y-% m-% d') como IST, DATE_FORMAT (CONVERT_TZ (creat) edOnGMTDate, '+ 00:00', '+ 01:00'), '% Y-% m-% d') como ECT, DATE_FORMAT (CONVERT_TZ (createdOnGMTDate, '+ 00:00', '+ 02:00'), '% Y-% m-% d') como EET, DATE_FORMAT (CONVERT_TZ (createdOnGMTDate, '+ 00:00', '+ 03:30'), '% Y-% m-% d') como MET , signo (clasificado) como sentimiento de

Por qué estoy haciendo esta conversión de zona horaria es porque necesito agrupar los resultados por la zona horaria del usuario. ¿Cómo puedo conseguir esto?

Saludos, Rohit

Respuesta

-3

La facetación de fechas está completamente controlada por params de consulta, por lo que si indexamos sus eventos usando el tiempo "verdadero" en que sucedieron (formateados como una cadena en UTC) puede seleccionar los intervalos de fechas utilizando cualquier compensación de zona horaria por su usuario en el momento de la consulta como un desplazamiento UTC.

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

Esto volvería resultado en la zona horaria usuarios y en realidad no hay necesidad de conversión de zona horaria la consulta y la indexación de que la columna por separado.

Saludos, Rohit

crédito para Respuesta: Chris Hostetter (Solr User Group)

+1

¿Por qué responde (y saluda) a usted mismo cuando le di la respuesta correcta a su excepción? ¡Además, esta respuesta no tiene relación alguna con la excepción en su propia pregunta! –

+1

Veo que copió la respuesta de Chris Hostetter en solr-usuario aquí, pero esa respuesta fue a ** una pregunta diferente ** ... –

+0

olvidé agregar el crédito ... lo he hecho ahora. – sesmic

16

Solr data debe ser en forma 1995-12-31T23:59:59Z. Solo le das la fecha, pero no el momento.

Consulte el DateField javadocs para obtener más información.

+0

Gracias por la respuesta, en realidad lo que tenemos que conseguir es ver grupo de resultados basados ​​en fechas como, 2011 -01- 2011-01-02 14 2011-01-03 40 2011-01-04 10 Ahora los registros en mi tabla se ejecutan en millones, agrupando el resultado basado en la fecha UTC no produciría el derecho resultado dado que el resultado debe agruparse en la zona horaria de los usuarios. ¿Hay alguna forma de que podamos lograr esto en Solr? – sesmic

+3

@rohitgu: necesitas ** dar ** fechas de Solr en este formato para indexar. No hay otra manera. Así que cambie todo a UTC, y cuando regrese los resultados cambie de vuelta a la zona horaria que sea necesaria. –

Cuestiones relacionadas