public override Query Rewrite(Monodoc.Lucene.Net.Index.IndexReader reader) { BooleanQuery query = new BooleanQuery(); TermEnum enumerator = reader.Terms(prefix); try { System.String prefixText = prefix.Text(); System.String prefixField = prefix.Field(); do { Term term = enumerator.Term(); if (term != null && term.Text().StartsWith(prefixText) && (System.Object) term.Field() == (System.Object) prefixField) { TermQuery tq = new TermQuery(term); // found a match tq.SetBoost(GetBoost()); // set the boost query.Add(tq, false, false); // add to query //System.out.println("added " + term); } else { break; } } while (enumerator.Next()); } finally { enumerator.Close(); } return query; }
public override Query Rewrite(Monodoc.Lucene.Net.Index.IndexReader reader) { FilteredTermEnum enumerator = GetEnum(reader); BooleanQuery query = new BooleanQuery(); try { do { Term t = enumerator.Term(); if (t != null) { TermQuery tq = new TermQuery(t); // found a match tq.SetBoost(GetBoost() * enumerator.Difference()); // set the boost query.Add(tq, false, false); // add to query } } while (enumerator.Next()); } finally { enumerator.Close(); } return query; }
public TermWeight(TermQuery enclosingInstance, Searcher searcher) { InitBlock(enclosingInstance); this.searcher = searcher; }
private void InitBlock(TermQuery enclosingInstance) { this.enclosingInstance = enclosingInstance; }
protected internal override Weight CreateWeight(Searcher searcher) { if (terms.Count == 1) { // optimize one-term case Term term = (Term) terms[0]; Query termQuery = new TermQuery(term); termQuery.SetBoost(GetBoost()); return termQuery.CreateWeight(searcher); } return new PhraseWeight(this, searcher); }
/// <summary> FIXME: Describe <code>rewrite</code> method here. /// /// </summary> /// <param name="reader">an <code>Monodoc.Lucene.Net.Index.IndexReader</code> value /// </param> /// <returns> a <code>Query</code> value /// </returns> /// <exception cref=""> IOException if an error occurs /// </exception> public override Query Rewrite(Monodoc.Lucene.Net.Index.IndexReader reader) { BooleanQuery query = new BooleanQuery(); TermEnum enumerator = reader.Terms(lowerTerm); try { bool checkLower = false; if (!inclusive) // make adjustments to set to exclusive checkLower = true; System.String testField = GetField(); do { Term term = enumerator.Term(); if (term != null && (System.Object) term.Field() == (System.Object) testField) { if (!checkLower || String.CompareOrdinal(term.Text(), lowerTerm.Text()) > 0) { checkLower = false; if (upperTerm != null) { int compare = String.CompareOrdinal(upperTerm.Text(), term.Text()); /* if beyond the upper term, or is exclusive and * this is equal to the upper term, break out */ if ((compare < 0) || (!inclusive && compare == 0)) break; } TermQuery tq = new TermQuery(term); // found a match tq.SetBoost(GetBoost()); // set the boost query.Add(tq, false, false); // add to query } } else { break; } } while (enumerator.Next()); } finally { enumerator.Close(); } return query; }