lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From RafaƂ Lenarczyk <rafal.lenarczyk...@gmail.com>
Subject lucene
Date Thu, 17 Mar 2011 15:40:52 GMT
Hy,
This mail should be written by developers.

I'm java developer and use your product in my application.
I use special QueryParser like MultiFieldQueryParser
I use static method parse where I must set lucene Version, string tab with
queries, string tab with field, string tab with flags and analyzer:
MultiFieldQueryParser.parse(Version matchVersion, String[] queries, String[]
fields, BooleanClause.Occur[] flags, Analyzer analyzer) throws
ParseException;

This implementation has one parameter analyzer, and I have differents fields
for example person name, person sname or person id sometimes.
I want use KeywordAnalyzer  to person id and other Analyzer to person name
and sname.
I wrote my specjal MultiFieldQueryParser.parse:

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.util.Version;

public class MyMultifieldQueryParser {

    public static Query parse(Version matchVersion, String[] queries,
String[] fields, BooleanClause.Occur[] flags, Analyzer[] analyzers) throws
ParseException {
        if (!(queries.length == fields.length && queries.length ==
flags.length))
            throw new IllegalArgumentException("queries, fields, and flags
array have have different length");
        BooleanQuery bQuery = new BooleanQuery();
        for (int i = 0; i < fields.length; i++) {
            QueryParser qp = new QueryParser(matchVersion, fields[i],
analyzers[i]); //---------------------------this was changed
            Query q = qp.parse(queries[i]);
            if (q!=null && // q never null, just being defensive
                    (!(q instanceof BooleanQuery) ||
((BooleanQuery)q).getClauses().length>0)) {
                bQuery.add(q, flags[i]);
            }
        }
        return bQuery;
    }
}

I think It is good idea and You can add in your new release.

Regards,
Rafal Lenarczyk

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message