/** * Create a new MultiTermSpanQuery. * * @param query Query to wrap. * <p> * NOTE: This will call {@link MultiNodeTermQuery#setRewriteMethod(MultiNodeTermQuery.RewriteMethod)} * on the wrapped <code>query</code>, changing its rewrite method to a suitable one for spans. * Be sure to not change the rewrite method on the wrapped query afterwards! Doing so will * throw {@link UnsupportedOperationException} on rewriting this query! */ @SuppressWarnings({"rawtypes"}) public MultiTermSpanQuery(Q query) { this.query = query; MultiNodeTermQuery.RewriteMethod method = query.getRewriteMethod(); if (method instanceof TopNodeTermsRewrite) { final int pqsize = ((TopNodeTermsRewrite) method).getSize(); setRewriteMethod(new TopTermsSpanBooleanQueryRewrite(pqsize)); } else { setRewriteMethod(SCORING_SPAN_QUERY_REWRITE); } }