java - Lucene 4.10 Date Range Query Api -


i want build range query date field programmatically in lucene 4.10, didn't find anyway that. pseudocode be:

new daterangequery(datelowerbound, dateupperbound); 

is idea use org.apache.lucene.document.datetool class transform , use numericrangequery?

i'd pick 1 of 2 possibilities:

1 - use datetools obtain string representation indexing:

string indexabledatestring = datetools.datetostring(thedate, datetools.resolution.minute); doc.add(new stringfield("importantdate", indexabledatestring, field.store.yes)); ... topdocs results = indexsearcher.search(new termrangequery(     "importantdate",     new bytesref(datetools.datetostring(lowdate, datetools.resolution.minute)),     new bytesref(datetools.datetostring(highdate, datetools.resolution.minute)),     true,     false )); ... field datefield = resultdocument.getfield("importantdate") date retrieveddate = datetools.stringtodate(datefield.stringvalue()); 

2 - skip date tools, , index dates numeric values using date.gettime() or calendar.gettimeinmillis(), or similar:

long indexabledatevalue = thedate.gettime(); doc.add(new longfield("importantdate", indexabledatevalue, field.store.yes)); ... topdocs results = indexsearcher.search(numericrangequery.newlongrange(     "importantdate",     lowdate.gettime(),     highdate.gettime(),     true,     false )); ... field datefield = resultdocument.getfield("importantdate") date retrieveddate = new date(datefield.numericvalue()); 

i'd opt first, makes control on precision more obvious, whichever strikes fancy should work fine.

also worth mentioning solr's triedatefield, though wouldn't recommend getting if aren't using solr anyway.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -