Sorry forgot to mention what you do for floats is take everything to the left of decimal point encode this to 16 digit hex (via long) then append of decimal point and everything following it. The only problem we tend to find is searching across large ranges either produces an exception about too many Boolean queries or does not return any results at all.
Mike -----Original Message----- From: Mike Streeton [mailto:[EMAIL PROTECTED] Sent: 25 January 2006 11:28 To: java-user@lucene.apache.org Subject: RE: Range queries I can recommend this method, this is how we do it, but what we store in the index is the long converted to a 16 digit number hex. The extended parser converts entered queries containing longs field to have hex. We obviously also do the conversion before we display the value. Floating point numbers are more difficult and so far I have used the same technique to do fixed position floats. Mike -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Chris Hostetter Sent: 24 January 2006 22:37 To: java-user@lucene.apache.org Subject: Re: Range queries : As Gwyn pointed out, that would make -3 > -2. Personally, I'd use : unsigned numbers and shift the range -- for 16 bit numbers I'd map : -32768..32767 to 0..65535 by adding 32768. I guess you could do that by : having overriding getRangeQuery() (LIA, p207 -- wonderful book). there are a lot of different techniques for encoding numeric values as lexigraphically ordered strings, finding the right soluation for any given case depends mainly on what hte scope of your values is -- if you're only ever dealing with the numbers 1-10, there are some really easy options. If you want something that can handle any "long" take a look at the NumberTools class in SVN. Even if what you want is something that can handle any int, the technique used in that class can be still be applied. As for the query parsing aspect -- subclassing and overriding the getRangeQuery method to know which fields to encode using your method of choice is the very easy to do. -Hoss --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]