Lucene 3.4 has NumericField support in it's flexible QueryParser (contrib/queryparser). The core Queryparser has no idea about numeric fields and always produces TermQuery/TermRangeQuery.
To your code: In general you should use NumericRangeQuery always and not TermQuery with NumericUtils (which is internal expert class) on numeric fields. Just use upper=lower, speed is same and it does not wrongly rank the results. Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: [email protected] > -----Original Message----- > From: Michael Remijan [mailto:[email protected]] > Sent: Wednesday, September 21, 2011 6:20 PM > To: [email protected] > Subject: Having trouble getting QueryParser to work... > > Sorry if this is an obvious question. > > I have the following BooleanQuery set up which works fine, and when I say > "fine" I mean if I change the search values to values which I know are not in the > index then the search returns no results. So this works OK. > > Query > dinnerQuery = new TermQuery(new Term("entry", "dinner")) > ,accountIdQuery = new TermQuery(new Term("accountid", > NumericUtils.intToPrefixCoded(1))) > ; > BooleanQuery > query = new BooleanQuery(); > query.add(accountIdQuery, Occur.MUST); > query.add(dinnerQuery, Occur.MUST); > > When I run the above code I get 1 result I am expecting: > > Found 1 hits > HIT #1 > accountid = 1 > journalid = 1 > id = 306 > > > > Now I've been trying to convert this to use a QueryParser expression but I have > not had any luck. Here is my first attempt. > > String str = > "accountid:1 AND entry:dinner" > ; > Query query > = parser.parse(str); > > When I execute this, I get no results: > > Found 0 hits > > So I changed the query to use NumericUtils thinking that might be the > problem... > > String str = > "accountid:" +NumericUtils.intToPrefixCoded(1)+ " AND > entry:dinner" > ; > Query query > = parser.parse(str); > > When I execute this, I thought I got the results I was looking for because the > query found the 1 hit it was suppose to, however, during testing I found I could > put any value i want in for accountid and the search will always return the 1 > hit. > > So I'm not sure what I'm doing wrong and why QueryParser is giving the results > it is.
