Hi all,

Let's say that I have in my index the value "One Two Three" for field 'A'.
I'm using a custom analyzer that is described in the forwarded message.

My Search query is built like this:

    QueryParser parser = new QueryParser(LABEL_FIELD, ANALYZER);
    Query query = parser.parse(LABEL_FIELD + ":" + searchQuery);

So when I search for

1) On*

I get a match with "One Two Three"

But when I search for

2) One Tw*

I get no matches. query.toString outputs:

3) label:One label:Tw*

which is obviously wrong. If I surround my search strng with ":

4) "One Tw*"

query.toString outputs what I was expecting:

5) label:One Tw*

but I still get no matches, and now even the first search (1) doesn't work.

Looking through the API I found this MultiPhraseQuery, but the doc was very
confusing. I tried it out but with no luck (I think I did it wrong). In any
case, is MultiPhraseQuery what I'm looking for? If it is, how should I use
the MultiPhraseQuery class?

Thanks,


Andre


---------- Forwarded message ----------
From: Andre Rubin <[EMAIL PROTECTED]>
Date: Thu, Aug 21, 2008 at 2:21 AM
Subject: Re: Case Sensitivity
To: java-user@lucene.apache.org


Just to add to that, as I said before, in my case, I found more useful not
to use UN_Tokenized. Instead, I used Tokenized with a custom analyzer that
uses the KeywordTokenizer (entire input as only one token) with the
LowerCaseFilter: This way I get the best of both worlds.

public class KeywordLowerAnalyzer extends Analyzer {

    public KeywordLowerAnalyzer() {
    }


    public TokenStream tokenStream(String fieldName, Reader reader) {
        TokenStream result = new KeywordTokenizer(reader);
        result = new LowerCaseFilter(result);
        return result;
    }

}

Reply via email to