@Override public String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
@Override public final Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException { final B builder = getTopLevelBuilder(); final ParallelArraysTermCollector col = new ParallelArraysTermCollector(); collectTerms(reader, query, col); final int size = col.terms.size(); if (size > 0) { final int sort[] = col.terms.sort(); final float[] boost = col.array.boost; final TermContext[] termStates = col.array.termState; for (int i = 0; i < size; i++) { final int pos = sort[i]; final Term term = new Term(query.getField(), col.terms.get(pos, new BytesRef())); assert reader.docFreq(term) == termStates[pos].docFreq(); addClause(builder, term, termStates[pos].docFreq(), boost[pos], termStates[pos]); } } return build(builder); }
@Override public String getField() { return query.getField(); }
@Override public String getField() { return query.getField(); }
@Override public String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
/** Returns the field name for this query */ public final String getField() { return query.getField(); }
private String getKey( Query query ){ if( !fieldMatch ) return null; while (query instanceof BoostQuery) { query = ((BoostQuery) query).getQuery(); } if( query instanceof TermQuery ) return ((TermQuery)query).getTerm().field(); else if ( query instanceof PhraseQuery ){ PhraseQuery pq = (PhraseQuery)query; Term[] terms = pq.getTerms(); return terms[0].field(); } else if (query instanceof MultiTermQuery) { return ((MultiTermQuery)query).getField(); } else throw new RuntimeException( "query \"" + query.toString() + "\" must be flatten first." ); }
public static FieldCollection extractFieldNames(Query query) { // first we need to find all composing queries since some query types are just containers Set<Query> composingQueries = new HashSet<>(); collectComposingQueries( query, composingQueries ); FieldCollection fieldCollection = new FieldCollection(); for ( Query composingQuery : composingQueries ) { if ( composingQuery instanceof NumericRangeQuery ) { fieldCollection.addNumericFieldName( ( (NumericRangeQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof MultiTermQuery ) { fieldCollection.addStringFieldName( ( (MultiTermQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof TermQuery ) { TermQuery termQuery = (TermQuery) composingQuery; fieldCollection.addStringFieldName( termQuery.getTerm().field() ); } else if ( composingQuery instanceof PhraseQuery ) { PhraseQuery phraseQuery = (PhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTerms()[0].field() ); } else if ( composingQuery instanceof MultiPhraseQuery ) { MultiPhraseQuery phraseQuery = (MultiPhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTermArrays().get( 0 )[0].field() ); } } return fieldCollection; }
@Override public final Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException { final B builder = getTopLevelBuilder(); final ParallelArraysTermCollector col = new ParallelArraysTermCollector(); collectTerms(reader, query, col); final int size = col.terms.size(); if (size > 0) { final int sort[] = col.terms.sort(); final float[] boost = col.array.boost; final TermContext[] termStates = col.array.termState; for (int i = 0; i < size; i++) { final int pos = sort[i]; final Term term = new Term(query.getField(), col.terms.get(pos, new BytesRef())); assert reader.docFreq(term) == termStates[pos].docFreq(); addClause(builder, term, termStates[pos].docFreq(), boost[pos], termStates[pos]); } } return build(builder); }
@Override public final Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException { final B builder = getTopLevelBuilder(); final ParallelArraysTermCollector col = new ParallelArraysTermCollector(); collectTerms(reader, query, col); final int size = col.terms.size(); if (size > 0) { final int sort[] = col.terms.sort(BytesRef.getUTF8SortedAsUnicodeComparator()); final float[] boost = col.array.boost; final TermContext[] termStates = col.array.termState; for (int i = 0; i < size; i++) { final int pos = sort[i]; final Term term = new Term(query.getField(), col.terms.get(pos, new BytesRef())); assert termStates[pos].hasOnlyRealTerms() == false || reader.docFreq(term) == termStates[pos].docFreq(); addClause(builder, term, termStates[pos].docFreq(), boost[pos], termStates[pos]); } } return build(builder); }
@Override public final Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException { final B builder = getTopLevelBuilder(); final ParallelArraysTermCollector col = new ParallelArraysTermCollector(); collectTerms(reader, query, col); final int size = col.terms.size(); if (size > 0) { final int sort[] = col.terms.sort(BytesRef.getUTF8SortedAsUnicodeComparator()); final float[] boost = col.array.boost; final TermContext[] termStates = col.array.termState; for (int i = 0; i < size; i++) { final int pos = sort[i]; final Term term = new Term(query.getField(), col.terms.get(pos, new BytesRef())); assert termStates[pos].hasOnlyRealTerms() == false || reader.docFreq(term) == termStates[pos].docFreq(); addClause(builder, term, termStates[pos].docFreq(), boost[pos], termStates[pos]); } } return build(builder); }