Search in sources :

Example 96 with Query

use of org.apache.lucene.search.Query in project elasticsearch by elastic.

the class MoreLikeThisQuery method createQuery.

private Query createQuery(XMoreLikeThis mlt) throws IOException {
    BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
    if (this.likeFields != null) {
        Query mltQuery = mlt.like(this.likeFields);
        mltQuery = Queries.applyMinimumShouldMatch((BooleanQuery) mltQuery, minimumShouldMatch);
        bqBuilder.add(mltQuery, BooleanClause.Occur.SHOULD);
    }
    if (this.likeText != null) {
        Reader[] readers = new Reader[likeText.length];
        for (int i = 0; i < readers.length; i++) {
            readers[i] = new FastStringReader(likeText[i]);
        }
        //LUCENE 4 UPGRADE this mapps the 3.6 behavior (only use the first field)
        Query mltQuery = mlt.like(moreLikeFields[0], readers);
        mltQuery = Queries.applyMinimumShouldMatch((BooleanQuery) mltQuery, minimumShouldMatch);
        bqBuilder.add(mltQuery, BooleanClause.Occur.SHOULD);
    }
    return bqBuilder.build();
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) FastStringReader(org.elasticsearch.common.io.FastStringReader) Query(org.apache.lucene.search.Query) BooleanQuery(org.apache.lucene.search.BooleanQuery) FastStringReader(org.elasticsearch.common.io.FastStringReader) Reader(java.io.Reader) IndexReader(org.apache.lucene.index.IndexReader)

Example 97 with Query

use of org.apache.lucene.search.Query in project elasticsearch by elastic.

the class MultiPhrasePrefixQuery method rewrite.

@Override
public Query rewrite(IndexReader reader) throws IOException {
    Query rewritten = super.rewrite(reader);
    if (rewritten != this) {
        return rewritten;
    }
    if (termArrays.isEmpty()) {
        return new MatchNoDocsQuery();
    }
    MultiPhraseQuery.Builder query = new MultiPhraseQuery.Builder();
    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);
    ObjectHashSet<Term> terms = new ObjectHashSet<>();
    for (Term term : suffixTerms) {
        getPrefixTerms(terms, term, reader);
        if (terms.size() > maxExpansions) {
            break;
        }
    }
    if (terms.isEmpty()) {
        // which rewrites query with an empty reader.
        return new BooleanQuery.Builder().add(query.build(), BooleanClause.Occur.MUST).add(Queries.newMatchNoDocsQuery("No terms supplied for " + MultiPhrasePrefixQuery.class.getName()), BooleanClause.Occur.MUST).build();
    }
    query.add(terms.toArray(Term.class), position);
    return query.build();
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) ObjectHashSet(com.carrotsearch.hppc.ObjectHashSet) Query(org.apache.lucene.search.Query) MatchNoDocsQuery(org.apache.lucene.search.MatchNoDocsQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) MatchNoDocsQuery(org.apache.lucene.search.MatchNoDocsQuery) MultiPhraseQuery(org.apache.lucene.search.MultiPhraseQuery) Term(org.apache.lucene.index.Term)

Example 98 with Query

use of org.apache.lucene.search.Query in project elasticsearch by elastic.

the class XMoreLikeThis method addToQuery.

/**
     * Add to an existing boolean query the More Like This query from this PriorityQueue
     */
private void addToQuery(PriorityQueue<ScoreTerm> q, BooleanQuery.Builder query) {
    ScoreTerm scoreTerm;
    float bestScore = -1;
    while ((scoreTerm = q.pop()) != null) {
        Query tq = new TermQuery(new Term(scoreTerm.topField, scoreTerm.word));
        if (boost) {
            if (bestScore == -1) {
                bestScore = (scoreTerm.score);
            }
            float myScore = (scoreTerm.score);
            tq = new BoostQuery(tq, boostFactor * myScore / bestScore);
        }
        try {
            query.add(tq, BooleanClause.Occur.SHOULD);
        } catch (BooleanQuery.TooManyClauses ignore) {
            break;
        }
    }
}
Also used : TermQuery(org.apache.lucene.search.TermQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) Query(org.apache.lucene.search.Query) TermQuery(org.apache.lucene.search.TermQuery) BooleanQuery(org.apache.lucene.search.BooleanQuery) BoostQuery(org.apache.lucene.search.BoostQuery) Term(org.apache.lucene.index.Term) BoostQuery(org.apache.lucene.search.BoostQuery)

Example 99 with Query

use of org.apache.lucene.search.Query in project elasticsearch by elastic.

the class FiltersFunctionScoreQuery method rewrite.

@Override
public Query rewrite(IndexReader reader) throws IOException {
    Query rewritten = super.rewrite(reader);
    if (rewritten != this) {
        return rewritten;
    }
    Query newQ = subQuery.rewrite(reader);
    if (newQ == subQuery)
        return this;
    return new FiltersFunctionScoreQuery(newQ, scoreMode, filterFunctions, maxBoost, minScore, combineFunction);
}
Also used : Query(org.apache.lucene.search.Query)

Example 100 with Query

use of org.apache.lucene.search.Query in project elasticsearch by elastic.

the class FunctionScoreQuery method rewrite.

@Override
public Query rewrite(IndexReader reader) throws IOException {
    Query rewritten = super.rewrite(reader);
    if (rewritten != this) {
        return rewritten;
    }
    Query newQ = subQuery.rewrite(reader);
    if (newQ == subQuery) {
        return this;
    }
    return new FunctionScoreQuery(newQ, function, minScore, combineFunction, maxBoost);
}
Also used : Query(org.apache.lucene.search.Query)

Aggregations

Query (org.apache.lucene.search.Query)1425 BooleanQuery (org.apache.lucene.search.BooleanQuery)682 TermQuery (org.apache.lucene.search.TermQuery)651 Term (org.apache.lucene.index.Term)405 MatchAllDocsQuery (org.apache.lucene.search.MatchAllDocsQuery)372 IndexSearcher (org.apache.lucene.search.IndexSearcher)297 BoostQuery (org.apache.lucene.search.BoostQuery)290 Test (org.junit.Test)265 PhraseQuery (org.apache.lucene.search.PhraseQuery)250 MatchNoDocsQuery (org.apache.lucene.search.MatchNoDocsQuery)238 TopDocs (org.apache.lucene.search.TopDocs)236 Document (org.apache.lucene.document.Document)221 ConstantScoreQuery (org.apache.lucene.search.ConstantScoreQuery)205 TermRangeQuery (org.apache.lucene.search.TermRangeQuery)199 PrefixQuery (org.apache.lucene.search.PrefixQuery)192 FuzzyQuery (org.apache.lucene.search.FuzzyQuery)181 IndexReader (org.apache.lucene.index.IndexReader)170 RegexpQuery (org.apache.lucene.search.RegexpQuery)163 ArrayList (java.util.ArrayList)150 WildcardQuery (org.apache.lucene.search.WildcardQuery)142