I'm still having problems getting QueryParser to correctly search and find a 
field which holds integer values.

I can use the NumericField to store the values, but I can't figure out how to 
integrate the contrib project to be able to search numeric fields.

Instead of using numeric fields, is it an acceptable practice to simply pre 
pend an integer value with leading zero's and treat it as a string?




________________________________
From: Michael Remijan <[email protected]>
To: "[email protected]" <[email protected]>
Sent: Wednesday, September 21, 2011 12:33 PM
Subject: Re: Having trouble getting QueryParser to work...


OK, that worked great.

Now, when I am indexing a date, I see that DateField is deprecated so I am 
using just a Field for this...


                new Field(
                    "day"                                            // The 
name of the field
                    ,DateTools.dateToString(day, Resolution.DAY)    // The 
string to
 process
                    ,Field.Store.NO                                // Whether 
value should be stored in the index
                    ,Field.Index.ANALYZED                            // Whether 
the field should be indexed, and if so, if it should be tokenized before 
indexing 
                )

so when I'm searching a date field range, I would use a TermRangeQuery correct?



________________________________
From: Uwe Schindler <[email protected]>
To: [email protected]; 'Michael Remijan' <[email protected]>
Sent: Wednesday, September 21, 2011 11:24 AM
Subject: RE: Having trouble getting QueryParser to work...

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.

Reply via email to