Hi,

I understand that generally speaking you should use the same analyzer on 
querying as was used on indexing.  In my code I am using the SnowballAnalyzer 
on index creation.  However, on the query side I am building up a complex 
BooleanQuery from other BooleanQuerys and/or PhraseQuerys on several fields.  
None of these require specifying an analyzer anywhere.  This is causing some 
odd results, I think, because a different analyzer (or no analyzer?) is being 
used for the query.

Question: how do I build my boolean and phrase queries using the 
SnowballAnalyzer?

One thing I did that seemed to kind of work was to build my complex query 
normally then build a snowball-analyzed query using a QueryParser instantiated 
with a SnowballAnalyzer.  To do this, I simply pass the string value of the 
complex query to the QueryParser.parse() method to get the new query.  
Something like this:

    // build a complex query from other BooleanQuerys and PhraseQuerys
    BooleanQuery fullQuery = buildComplexQuery();
    QueryParser parser = new QueryParser(Version.LUCENE_30, "title", new 
SnowballAnalyzer(Version.LUCENE_30, "English"));
    Query snowballAnalyzedQuery = parser.parse(fullQuery.toString());

    TopScoreDocCollector collector = TopScoreDocCollector.create(10000, true);
    indexSearcher.search(snowballAnalyzedQuery, collector);

Like I said, this seems to kind of work but it doesn't feel right.  Does this 
make sense?  Is there a better way?

thanks in advance,

Bill

Reply via email to