2009-04-28 14 views
25

Bueno, estoy codificando algunos métodos para devolver documentos de Solr que maten un rango de fechas de intervalo. Docs almacenó campos de fecha con formato ISO 8601.Rangos de búsqueda de Solr

¿Alguna idea?

THX

Respuesta

61

Comprobar en el SOLR wiki de algunos documentos y ejemplos:

marca de tiempo: [* ahora]

CreateDate: [1976-03-06T23: 59: 59.999Z A *]

CreateDate: [1995-12-31T23: 59: 59.999Z A 2007-03-06T00: 00: 00Z]

pubdate: [YA-1YE AR/día a NOW/día + 1DIA]

CreateDate: [1976-03-06T23: 59: 59.999Z A 1976-03-06T23: 59: 59.999Z + 1YEAR]

CreateDate: [1976- 03-06T23: 59: 59.999Z/AÑO A 1976-03-06T23: 59: 59.999Z]

Espero que esto ayude, David.

+0

Thx David, saludos desde España – Lici

+0

de qué, si esta respuesta era la solución que estabas buscando, simplemente marque como Aceptado, si no, permítanos (la comunidad) saber qué hay en su camino :) –

+3

Todos los ejemplos de fecha literal usan fecha y hora, ¿es posible trabajar solo con fechas? P.ej. createdate: [1976-03-06 TO 1976-03-09] – kaqqao

30

Aquí se encontraría más detalles acerca del rango de consulta

https://cwiki.apache.org/confluence/display/solr/The+Standard+Query+Parser

Algunos exampled

1. Exact Matching: q= modify_date:"2012-07-06T9:23:43Z" 
2. Less than: q= modify_date:{* TO 2012-07-06T9:23:43Z } 
3. More than: q= modify_date:{ 2012-07-06T9:23:43Z TO *} 
4. Less or equal than: modify_date:[* TO 2012-07-06T9:23:43Z] 
5. More or equal than: modify_date:[ 2012-07-06T9:23:43Z TO *] 

Los corchetes [] indican una consulta rango inclusivo que coincide con los valores incluyendo el límite superior e inferior .

Los corchetes {} indican una consulta de rango exclusivo que coincide con los valores entre los límites superior e inferior, pero excluyendo los límites superiores e inferiores.

+1

Esta respuesta cubre todas las posibilidades, como el uso de llaves para excluir un rango particular que la respuesta aceptada. – palerdot

+0

El ejemplo de Solr usa el tipo de campo TrieDate. Sin embargo, DateRangeField tiene una sintaxis más flexible. Solo puede especificar AAAA-MM o solo YYYY. Consulte ** Formato del intervalo de fechas ** dentro de [Cómo trabajar con la fecha en la guía de referencia] (https://cwiki.apache.org/confluence/display/solr/Working+with+Dates). –

3

Suponga que su campo en el esquema es tan MODIFIED_DATE continuación, puede aplicar siguiente gama de consultas:

Modified_Date:[2015-04-20T07:49:00Z TO *] 
Modified_Date:[2015-04-20T07:49:00Z TO 2015-05- 
20T07:33:00Z] 
Modified_Date:[2015-04-20T07:49:00Z TO NOW] 
Modified_Date:[NOW-7DAY/DAY TO NOW] 
Modified_Date:"2015-05-27T10:04:00Z" 
Modified_Date:NOW 
Modified_Date:NOW/DAY 
Modified_Date:NOW/HOUR 
Modified_Date:NOW-1YEAR 
Modified_Date:NOW-2YEARS 
Modified_Date:NOW-3HOURS-30MINUTES 
Modified_Date:"2008-07-04T13:45:04Z/DAY" 
Modified_Date:[* TO NOW] 
Modified_Date://DAY 
Modified_Date://HOUR 
Modified_Date:[ * 2015-04-20T07:49:00Z ] 
Modified_Date:[2015-04-20T07:49:00Z *] 
Cuestiones relacionadas