2009-08-26 12 views
0

Ich möchte alle Ergebnisse nach einem bestimmten Datum erhalten, können Sie dies mit Solr tun?Kann ich die Suche auf einen bestimmten Zeitraum beschränken?

(http://lucene.apache.org/solr/)

Gerade jetzt sind die Ergebnisse die gesamte Ergebnismenge suchen, die ich für alles nach einem bestimmten Datum filtern möchten.

Aktualisieren Dies funktioniert bei mir noch nicht.

Mein zurück doc:

versuchen:

http://www.example.com:8085/solr/select/?q=test&version=2.2&start=0&rows=10&indent=on&indexed_at:2009-08-27T13%3A15%3A27.73Z

<doc> 
<str name="apptype">Forum</str> 
<str name="collapse">forum:334</str> 
<str name="content"> testing </str> 
<str name="contentid">357</str> 
<str name="createdby">some_user</str> 
<str name="date">20090819</str> 
<str name="dummy_id">1</str> 
<int name="group">5</int> 
<date name="indexed_at">2009-08-25T16:48:45.121Z</date> 
<str name="rating">000.0</str> 
<str name="rawcontent"><p>testing</p></str> 
− 
<arr name="roles"> 
<str>1</str> 
<str>2</str> 
<str>3</str> 
<str>4</str> 
<str>14</str> 
<str>15</str> 
<str>16</str> 
</arr> 
<int name="section">79</int> 
<int name="thread">334</int> 
<str name="title">testing</str> 
<str name="titlesort">testing</str> 
<str name="type">forum</str> 
− 
<str name="unique_id"> 
BLAHBLAH|357 
</str> 
<str name="url">/blahey/f/79/p/334/357.aspx#357</str> 
<str name="user">21625</str> 
<str name="username">some_user</str> 
</doc> 

Antwort

4

Ja, Sie kann ich nehme an, Sie haben ein Feld mit dem Datum Wert, den Sie filtern möchten. Dann tun Sie

yourdatefield:[2008-08-27T23:59:59.999Z TO *] 

eine URL Probe localhost würde: 8983/Solr/wählen q = yourdatefield: [2008-08-27T23:59:59.999Z TO *]

möchten Sie das Datum Teil als Abfrage vorzulegen, damit im Wert von q wie

localhost:8983/solr/select/q=(text:test+AND+indexed_at:`[2009-08-27T13:A15:A27.73Z TO *`]) 

Also die gesamte Abfrage ist in der q Querystring-Parameter enthalten.

das Format des Datums ist ISO 8601

+0

hat es IO zu verwenden, warum hast du yourdatefield.? Und nicht yourdatefield = – mrblah

+0

IO Sie ISO bedeuten? Ja, das ist die Art, wie SOLR Datumsangaben formatiert. Und der Grund für die Verwendung von: statt = ist, dass = die Trennung zwischen einem Schlüssel und einem Wert im HTTP-Kontext bezeichnet. Where as: ist die Trennung von Schlüssel und Wert im SOLR-Kontext – olle

+0

Olle, sehe meine Updates, es scheint nicht zu funktionieren. Ich postete den neu eingestellten xml doc-Knoten, wenn das hilft? – mrblah

2

Sie können einen automatischen Zeitstempel zu den Dokumenten hinzufügen, wie sie indizieren verwenden:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/> 

in der schema.xml. Das Standardschema hat dies auskommentiert. Wenn Sie also den Standardwert kopieren, müssen Sie ihn nur auskommentieren.

Sie könnten das hinzufügen und das vorgeschlagene Suchmuster von olle verwenden, um nach einem bestimmten Datum indizierte Dokumente zu finden. (Würden Sie haben zu aktualisieren yourdatefield mit Zeitstempel oder was auch immer Sie das Feld in der XML-Name

+0

Vielen Dank für diesen Tipp danivo! – mrblah

+0

Ich sehe das nicht in meiner schema.xml, ich habe: und und . und mrblah

+0

Ja, es wäre das Feld indexed_at Wie zur Lösung Ihres Problems, ich denke, olle geklärt die Antwort richtig mit setzen der indexed_at: [Start_Datum zu *] in der q = Teil Ihres Anrufs. – danivovich

Verwandte Themen