Hello, I have a QParser impl. that transforms text input to one or more integers, it makes a BooleanQuery one a field with all integers in OR-more. It used to work by transforming the integer using LegacyNumericUtils.intToPrefixCoded, getting a BytesRef.
I have now moved it to use IntPoint.newRangeQuery(field, integer, integer), i read (think javadocs) this is the way to go, but i get no matches! Iterator<Integer> i = digests.iterator(); while (i.hasNext()) { Integer digest = i.next(); queryBuilder.add(IntPoint.newRangeQuery(field, digest, digest), Occur.SHOULD); } return queryBuilder.build(); To be sure i didn't mess up elsewhere i also tried building a string for LuceneQParser and cheat: Iterator<Integer> i = digests.iterator(); while (i.hasNext()) { Integer digest = i.next(); str.append(ClientUtils.escapeQueryChars(digest.toString())); if (i.hasNext()) { str.append(" OR "); } } QParser luceneQParser = new LuceneQParser(str.append(")").toString(), localParams, params, req); return luceneQParser.parse(); Well, this works! This is their respective debug output: Using the IntPoint range query: <result name="response" numFound="0" start="0"> </result> <lst name="debug"> <str name="rawquerystring">{!q f=d1}value</str> <str name="querystring">{!q f=d1}value</str> <str name="parsedquery">(d1:[-1820898630 TO -1820898630])</str> <str name="parsedquery_toString">d1:[-1820898630 TO -1820898630]</str> LuceneQParser cheat, it does find! <result name="response" numFound="2" start="0"> <doc> <str name="id">1</str> <int name="d1">-1820898630</int></doc> </result> <lst name="debug"> <str name="rawquerystring">{!qd f=d1}value</str> <str name="querystring">{!qd f=d1}value</str> <str name="parsedquery">d1:-1820898630</str> There is not much difference in output, it looks fine, using LuceneQParser you can also match using a range query, so what am i doing wrong? Many thanks! Markus