Erik Hatcher wrote:

On Jun 19, 2004, at 1:51 AM, Jason St. Louis wrote:

I wrote my indexer so that it added each field without tokenizing it:

Field fnameField = new Field("fname", fname.toLowerCase(), true, true, false);
Field lnameField = new Field("lname", lname.toLowerCase(), true, true, false);
Field cityField = new Field("city", position.toLowerCase(), true, true, false);


By the way, if this is the case, is the indexer even using the analyzer that I pass to it?


No. Tokenized fields are analyzed. Non-tokenized fields are left as-is. It might be clearer if you used Field.Keyword instead, which is identical to what you have here.

That's what I figured. I suppose if I don't want to store the field values in the index, I can't use Field.Keyword, though. I just realized that I'm storing those 3 fields when I don't need to. The only field I need to store is the primary key of the person in the database (not pictured in the above code) which I use to retrieve the full record from the database later.



Then in my search code I create the firstname query as a WildcardQuery if the first name is provided (adding a * to the end if it's not already there):

Term fnameTerm = null;
Query fnameQuery = null;
if( fnameIn.length() > 0)
{
    if( !fnameIn.endsWith("*") )
    {
        fnameIn += "*";
    }
    fnameTerm = new Term("fname", fnameIn);
    fnameQuery = new WildcardQuery(fnameTerm);
}


I recommend PrefixQuery in this case.

Excellent. That actually works much better than the WildcardQuery for what I'm trying to do here.



I presume you lowercased fnameIn? You should to get it to match what was indexed.

Yes, I did.



Does this seem like a reasonable way to approach this problem, or am I missing something that's going to bite me in the you-know-what?


Seems reasonable to me as long as you are lowercasing the strings at query time also.

    Erik


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




Thanks for your response. I really appreciate it.

Jason


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to