You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Chris Salem <cs...@mainsequence.net> on 2018/04/05 19:01:54 UTC

upgrading to lucene 5.5.5

I'm trying to upgrade from lucene 4.10.4 too lucene 5.5.5 and I'm having
trouble converting some of my code, here's the function I'm having trouble
with.

 

public Query rewrite(IndexReader reader) throws IOException {

                  WildcardQuery wildQuery = new WildcardQuery(term);

 
wildQuery.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);

                  Query q = wildQuery.rewrite(reader);

                  

                  if(q instanceof BooleanQuery || q instanceof WildcardQuery
|| q instanceof PrefixQuery || q instanceof ConstantScoreQuery){


                  }else{

                        return new SpanTermQuery(term);

                  }

                  

                  BooleanQuery bq = (BooleanQuery) q;

                  

                  List<BooleanClause> clauses = bq.clauses();

                  SpanQuery[] sqs = new SpanQuery[clauses.size()];

                  

                  for (int i = 0; i < clauses.size(); i++) {

                        BooleanClause clause = clauses.get(i);

                        

                        TermQuery tq = (TermQuery) clause.getQuery();

                        

                        sqs[i] = new SpanTermQuery(tq.getTerm());

                        sqs[i].setBoost(tq.getBoost());

                  }

                  

                  SpanOrQuery query = new SpanOrQuery(sqs);

                  query.setBoost(wildQuery.getBoost());

                  

                  return query;

            }

 

The problem is the clause.getQuery() doesn't return a TermQuery anymore, it
returns a BoostQuery.  How would I get it to return a TermQuery?  Or how
would I get the term from a BoostQuery?

 

Thanks for your help.

Thanks,

Chris Salem