Ah, i hoped that that was the case, but it appears i really did change all occurences of Trie to Point:
<fieldType name="int" class="solr.IntPointField"/> <field name="d1" type="int" indexed="true" stored="true" multiValued="false"/> This is the schema the test is using. Also, this is in a unit test which i forgot to mention, so i reindex everything for each test. Thanks anyway, Markus -----Original message----- > From:Alan Woodward <a...@flax.co.uk> > Sent: Tuesday 26th September 2017 13:48 > To: solr-user@lucene.apache.org > Subject: Re: Moving to Point, trouble with IntPoint.newRangeQuery() > > The Points queries use a completely different data structure to the previous > range queries, so you can’t just use them interchangeably, you have to > reindex your data. I’m guessing your ‘d1’ field here is a TrieIntField or > similar? > > Alan Woodward > www.flax.co.uk > > > > On 26 Sep 2017, at 12:22, Markus Jelsma <markus.jel...@openindex.io> wrote: > > > > 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 > >