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

 

Reply via email to