2009-04-28 18 views
25

Nun, ich kodiere einige Methoden für die Rückgabe von solr Dokumente, die einen Intervall Datumsbereich Mach. Dokumente gespeichert Datumsfelder mit ISO 8601-Format.Solr Datenbereiche abrufen

Irgendeine Idee?

thx

Antwort

61

Check in der SOLR wiki für einige Dokumente und Beispiele:

Zeitstempel: [* TO NOW]

ErstellDat: [1976-03-06T23: 59: 59.999Z TO *]

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

pubdate: [NOW-1YE AR/TAG JETZT/TAG + 1DAY]

ErstellDat: [1976-03-06T23: 59: 59.999Z TO 1976-03-06T23: 59: 59.999Z + 1YEAR]

ErstellDat: [1976- 03-06T23: 59: 59.999Z/JAHR 1976-03-06T23: 59: 59.999Z]

hoffe, das hilft, David.

+0

Thx David, Grüße aus Spanien – Lici

+0

Sie sind willkommen, Wenn diese Antwort war die Lösung, die Sie gesucht haben, markieren Sie einfach als Akzeptiert, wenn nicht, lassen Sie uns (die Community) wissen, was Ihnen noch im Weg steht :) –

+3

Alle literalen Datumsbeispiele verwenden Datum und Uhrzeit, ist es möglich, nur mit Datumsangaben zu arbeiten? Z.B. createate: [1976-03-06 TO 1976-03-09] – kaqqao

30

Hier würden Sie weitere Informationen finden über Bereich

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

fragt

Ein paar

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 *] 

Eckige Klammern [] ein integratives Bereichsabfrage bezeichnen exampled die Werte einschließlich der oberen Spiele und untere Schranke .

Geschweifte Klammern {} bezeichnen eine exklusive Bereichsabfrage, die Werte zwischen den oberen und unteren Grenzen, jedoch ohne die oberen und unteren Grenzen selbst, abgleicht.

+1

Diese Antwort behandelt alle Möglichkeiten, geschweifte Klammern zum Ausschließen eines bestimmten Bereichs als die akzeptierte Antwort zu verwenden. – palerdot

+0

Solr Beispiel verwendet TrieDate Feldtyp. DateRangeField hat jedoch eine flexiblere Syntax. Sie können nur YYYY-MM oder nur YYYY angeben. Siehe ** Formatierung des Datumsbereichs ** innerhalb von [Arbeiten mit Datum im Referenzhandbuch] (https://cwiki.apache.org/confluence/display/solr/Working+with+Dates). –

3

Ihr Feld als MODIFIED_DATE in Schema Angenommen, dann können Sie Bereichsabfragen gilt:

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 *]