views:

262

answers:

1

I'm looking for an efficient way to index and search numeric fields in Lucene.Net. Right now my need is for integer values only.

I want to search by ranges of values (between x and y, more than x...). Right now I'm indexing the number as is and manually creating clauses for each value in between the two values, but it quickly generates a lot of clauses and hitting the default limit (1024) when I'm searching for a value between 1000 and 5000, for example. I'm sure there is a better way to do that...

+1  A: 

Solved it with a RangeQuery. It can also be done with the query parser with the following syntax:

FieldName:[startValue TO endValue]

Keep in mind that the range query operates on strings, so your numbers must be normalized both in the index and in the query. In my case I normalized to 5 digits with .ToString("00000"). Special handling would be necessary for negative numbers and decimals, but it wasn't an issue in my case.

David Thibault