2012-10-19 20 views
11

In meinem SOLR gibt es Datumsfeld (published_date) und die Werte sind in diesem Format "2012-09-26T10: 08: 09.123Z"Wie Abfrage in Solr nach Datum filtern?

Wie ich durch einfache Eingabe wie „2012.09.10 suchen "anstelle des vollständigen ISO-Datumsformats.

Ist es möglich, in SOLR? Ich habe versucht, mit

fq=[2012-09-24%20TO%20NOW]

Es sollte zurückkehren durch Filterung Ergebnisse von mehr als veröffentlicht Datum 2012-09-24 und weniger als jetzt.

Aber es gibt Daten mit veröffentlichten Datum 2012-09-23, wie unten

<float name="score">2.8183863</float> 
<str name="name">Local Team Inspires Obama</str> 
<date name="published_date">2012-09-23T07:44:53.123Z</date> 

bin ich etwas fehlt?

danke im voraus.

+3

hallo. Suche auf SO, es gibt viele ähnliche Fragen mit Antworten bereit (ich sollte nicht aber ... http://StackOverflow.com/search?q=solr+Date+Query) –

+4

'& fq = published_date: [2012-09- 24T00: 00: 00Z TO 2012-09-24T23: 59: 99.999Z] 'sollte den Trick machen –

+0

möglich Duplikat von [SOLR: Bereichsabfrage mit Summe] (http://stackoverflow.com/questions/10603568/solr-range -Abfrage-mit-Summe) – ZyX

Antwort

25

Wenn Sie letzte Woche Publikationen erhalten Sie somehting tun können, wie:

&fq=published_date:[NOW-7DAY/DAY TO NOW] 

Aber wenn Sie ein konkretes Datum wollen, müssen Sie es im SOLR Datumsformat tun:

&fq=published_date:[2013-07-17T00:00:00Z TO NOW] 

I hoffe das hilft

6

Die einfachste Form von Solr date ist das Schlüsselwort 'NOW', das sich auf das aktuelle Datum und die Uhrzeit bezieht. In Solr wird die Groß-/Kleinschreibung beachtet, aber der Lucid-Abfrageparser lässt es in jedem Fall zu. 'JETZT' kann entweder verwendet werden, wenn keine explizite Datums- oder Datums-Mathematik angegeben ist, oder es kann verwendet werden, wenn die Datums-Mathematik ohne ein explizites Datum angegeben wird.

Ein explizites Datum wird in Solr mit einem Format nach ISO 8601 geschrieben, das aus einer Zeichenfolge des Formats JJJJ-MM-TTTHH besteht: mm: ss.mmmZ, wobei "JJJJ" das vierstellige Jahr ist, das erste "mm" ist der zweistellige Monat, "dd" ist der zweistellige Tag, "T" ist der obligatorische Buchstabe "T", um anzuzeigen, dass die Zeit folgt, "hh" ist die zweistellige Stunde (' 00 'bis' 23 '), die zweite' mm 'ist die zweistellige Minute (' 00 'bis' 59 '),' ss 'ist die zweistellige Sekunde (' 00 'bis' 59 '), optional' .mmm 'ist die dreistellige Millisekunde, der ein Punkt vorausgeht, und' Z 'ist der obligatorische Literalbuchstabe' Z ', um anzuzeigen, dass die Zeit UTC (' Zulu ') ist. Der Millisekunden-Teil, einschließlich seiner führenden Periode, ist optional. Nachgestellte Nullen sind für Millisekunden nicht erforderlich.

For example: 

    2008-01-01T00:00:00Z 

    2008-01-01T00:00:00 

    2008-01-01T00:00 same as [2008-01-01T00:00:00Z TO 2008-01-01T00:00:59Z] 

    2008-01-01T00: same as [2008-01-01T00:00:00Z TO 2008-01-01T00:59:59Z] 

    2008-01-01T same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z] 

    2008-01-01 same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z] 

    2008-01 same as [2008-01-01T00:00:00Z TO 2008-01-31T23:59:59Z] 

    2008 same as [2008-01-01T00:00:00Z TO 2008-12-31T23:59:59Z] 

Credit Solr Documentation

Verwandte Themen