public float sumOfSquaredWeights() { queryWeight = idf * getBoost(); // compute query weight return queryWeight * queryWeight; // square it }
public float sumOfSquaredWeights() { queryWeight = idf * getBoost(); // compute query weight return queryWeight * queryWeight; // square it }
/** Returns true iff <code>o</code> is equal to this. */ public boolean equals(Object o) { if (!(o instanceof PhraseQuery)) return false; PhraseQuery other = (PhraseQuery)o; return (this.getBoost() == other.getBoost()) && (this.slop == other.slop) && this.terms.equals(other.terms) && this.positions.equals(other.positions); }
/** Returns true iff <code>o</code> is equal to this. */ public boolean equals(Object o) { if (!(o instanceof PhraseQuery)) return false; PhraseQuery other = (PhraseQuery)o; return (this.getBoost() == other.getBoost()) && (this.slop == other.slop) && this.terms.equals(other.terms) && this.positions.equals(other.positions); }
/** Returns a hash code value for this object.*/ public int hashCode() { return Float.floatToIntBits(getBoost()) ^ slop ^ terms.hashCode() ^ positions.hashCode(); }
/** Returns a hash code value for this object.*/ public int hashCode() { return Float.floatToIntBits(getBoost()) ^ slop ^ terms.hashCode() ^ positions.hashCode(); }
/** Returns true iff <code>o</code> is equal to this. */ public boolean equals(Object o) { if (!(o instanceof PhraseQuery)) return false; PhraseQuery other = (PhraseQuery)o; return (this.getBoost() == other.getBoost()) && (this.slop == other.slop) && this.terms.equals(other.terms) && this.positions.equals(other.positions); }
/** Prints a user-readable version of this query. */ public String toString(String f) { StringBuffer buffer = new StringBuffer(); if (!field.equals(f)) { buffer.append(field); buffer.append(":"); } buffer.append("\""); for (int i = 0; i < terms.size(); i++) { buffer.append(((Term)terms.elementAt(i)).text()); if (i != terms.size()-1) buffer.append(" "); } buffer.append("\""); if (slop != 0) { buffer.append("~"); buffer.append(slop); } if (getBoost() != 1.0f) { buffer.append("^"); buffer.append(Float.toString(getBoost())); } return buffer.toString(); }
/** Returns a hash code value for this object.*/ public int hashCode() { return Float.floatToIntBits(getBoost()) ^ Float.floatToIntBits(slop) ^ terms.hashCode() ^ positions.hashCode(); }
protected Weight createWeight(Searcher searcher) { if (terms.size() == 1) { // optimize one-term case Term term = (Term)terms.elementAt(0); Query termQuery = new TermQuery(term); termQuery.setBoost(getBoost()); return termQuery.createWeight(searcher); } return new PhraseWeight(searcher); }
protected Weight createWeight(Searcher searcher) throws IOException { if (terms.size() == 1) { // optimize one-term case Term term = (Term)terms.get(0); Query termQuery = new TermQuery(term); termQuery.setBoost(getBoost()); return termQuery.createWeight(searcher); } return new PhraseWeight(searcher); }
protected Weight createWeight(Searcher searcher) throws IOException { if (terms.size() == 1) { // optimize one-term case Term term = (Term)terms.get(0); Query termQuery = new TermQuery(term); termQuery.setBoost(getBoost()); return termQuery.createWeight(searcher); } return new PhraseWeight(searcher); }
public float sumOfSquaredWeights() throws IOException { idf = getSimilarity(searcher).idf(terms, searcher); queryWeight = idf * getBoost(); // compute query weight return queryWeight * queryWeight; // square it }
@Override public Query rewrite(IndexReader reader) throws IOException { if (terms.isEmpty()) { Query rewritten = new MatchNoDocsQuery(); rewritten.setBoost(getBoost()); return rewritten; } else if (terms.size() == 1) { TermQuery tq = new TermQuery(terms.get(0)); tq.setBoost(getBoost()); return tq; } else if (positions.get(0).intValue() != 0) { final int[] oldPositions = getPositions(); int[] newPositions = new int[oldPositions.length]; for (int i = 0; i < oldPositions.length; ++i) { newPositions[i] = oldPositions[i] - oldPositions[0]; } PhraseQuery rewritten = new PhraseQuery(slop, getTerms(), newPositions); rewritten.setBoost(getBoost()); return rewritten; } else { return super.rewrite(reader); } }
@Override public Query rewrite(IndexReader reader) throws IOException { if (terms.isEmpty()) { Query rewritten = new MatchNoDocsQuery(); rewritten.setBoost(getBoost()); return rewritten; } else if (terms.size() == 1) { TermQuery tq = new TermQuery(terms.get(0)); tq.setBoost(getBoost()); return tq; } else if (positions.get(0).intValue() != 0) { final int[] oldPositions = getPositions(); int[] newPositions = new int[oldPositions.length]; for (int i = 0; i < oldPositions.length; ++i) { newPositions[i] = oldPositions[i] - oldPositions[0]; } PhraseQuery rewritten = new PhraseQuery(slop, getTerms(), newPositions); rewritten.setBoost(getBoost()); return rewritten; } else { return super.rewrite(reader); } }
private void checkOverlap( Collection<Query> expandQueries, PhraseQuery a, PhraseQuery b ){ if( a.getSlop() != b.getSlop() ) return; Term[] ats = a.getTerms(); Term[] bts = b.getTerms(); if( fieldMatch && !ats[0].field().equals( bts[0].field() ) ) return; checkOverlap( expandQueries, ats, bts, a.getSlop(), a.getBoost() ); checkOverlap( expandQueries, bts, ats, b.getSlop(), b.getBoost() ); }
private static JsonObject convertPhraseQuery(PhraseQuery query) { Term[] terms = query.getTerms(); if ( terms.length == 0 ) { throw LOG.cannotQueryOnEmptyPhraseQuery(); } String field = terms[0].field(); // phrase queries are only supporting one field StringBuilder phrase = new StringBuilder(); for ( Term term : terms ) { phrase.append( " " ).append( term.text() ); } JsonObject phraseQuery = JsonBuilder.object() .add( "match_phrase", JsonBuilder.object().add( field, JsonBuilder.object() .addProperty( "query", phrase.toString().trim() ) .addProperty( "slop", query.getSlop() ) .addProperty( "boost", query.getBoost() ) ) ).build(); return wrapQueryForNestedIfRequired( field, phraseQuery ); }
void add( Query query ){ if( query instanceof TermQuery ){ addTerm( ((TermQuery)query).getTerm(), query.getBoost() ); } else if( query instanceof PhraseQuery ){ PhraseQuery pq = (PhraseQuery)query; Term[] terms = pq.getTerms(); Map<String, QueryPhraseMap> map = subMap; QueryPhraseMap qpm = null; for( Term term : terms ){ qpm = getOrNewMap( map, term.text() ); map = qpm.subMap; } qpm.markTerminal( pq.getSlop(), pq.getBoost() ); } else throw new RuntimeException( "query \"" + query.toString() + "\" must be flatten first." ); }
@Override public Query visit(PhraseQuery phraseQuery) { PhraseQuery newQuery = new PhraseQuery(); for(Term term: phraseQuery.getTerms()) { Field field = Field.getByName( term.field() ); if( field != Field.CONTENTS ) return phraseQuery; Term newTerm = Field.CONTENTS.createTerm( term.text().toLowerCase(Locale.ENGLISH) ); newQuery.add( newTerm ); } newQuery.setSlop(phraseQuery.getSlop()); newQuery.setBoost( phraseQuery.getBoost() ); return newQuery; } }
boolQuery.setBoost( phraseQuery.getBoost()*0.5f );