Example usage for org.apache.lucene.search MultiPhraseQuery rewrite

List of usage examples for org.apache.lucene.search MultiPhraseQuery rewrite

Introduction

In this page you can find the example usage for org.apache.lucene.search MultiPhraseQuery rewrite.

Prototype

@Override
    public Query rewrite(IndexReader reader) throws IOException 

Source Link

Usage

From source file:org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery.java

License:Apache License

@Override
public Query rewrite(IndexReader reader) throws IOException {
    if (termArrays.isEmpty()) {
        return new MatchNoDocsQuery();
    }/*from ww w. j a va 2 s  .co  m*/
    MultiPhraseQuery query = new MultiPhraseQuery();
    query.setSlop(slop);
    int sizeMinus1 = termArrays.size() - 1;
    for (int i = 0; i < sizeMinus1; i++) {
        query.add(termArrays.get(i), positions.get(i));
    }
    Term[] suffixTerms = termArrays.get(sizeMinus1);
    int position = positions.get(sizeMinus1);
    ObjectOpenHashSet<Term> terms = new ObjectOpenHashSet<Term>();
    for (Term term : suffixTerms) {
        getPrefixTerms(terms, term, reader);
        if (terms.size() > maxExpansions) {
            break;
        }
    }
    if (terms.isEmpty()) {
        return Queries.newMatchNoDocsQuery();
    }
    query.add(terms.toArray(Term.class), position);
    return query.rewrite(reader);
}