1
votes

I have the following in solr

<str name="id">2</str>
<arr name="parsed">
    <str>2011-11-01 13:40:08.0</str>
</arr>
<arr name="person">
    <str>Harsh Snehanshu | Apoorv Jain</str>
</arr>

now if i want to search for jain, simply i will use this query

http://192.168.1.135:8888/solr/MyCol/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&fq=person:jain

now the question is: how can i search for entries that have been parsed AFTER (greater than) 2011-11-01 13:00:00 or (between 2011-11-01 12:30:00 and 2011-11-01 13:30:00)??
Thanks for your help

2

2 Answers

3
votes

The parsed field needs to be defined as a datefield.

e.g.

schema.xml -

Field type of TrieDateField should be available -

<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>

Map the prased field with the tdate field type as -

<field name="parsed" type="tdate" indexed="true" stored="true"/>

So, when indexed, the response it would appear as <date name="parsed">2009-04-28T00:00:00Z</date>

This would allow you to use date filter queries for the datefield.

e.g. fq=parsed:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]

Also for search it would be better to use q=person:jain.
Use filter queries for restricting the documents rather than searching.

0
votes

These query parameters should work (not tested and not url escaped)

facet.field=parsed
f.parsed.facet.range.start=2011-11-01T12:30:00Z
f.parsed.facet.range.end=2011-11-01T13:30:00Z

Explanation:

  • facet.field=parsed enables faceting in the field parsed.
  • f.parsed.facet.range.start/end define the lower and upper bound for that field.
  • Dates should be in ISO 8601 format, but also "date math" expressions like NOW+1YEAR are allowed.

See the Facet by Range section in the Solr documentation for further details.