This probably warrants a CHANGES entry? -Yonik http://www.lucidimagination.com
On Fri, Oct 23, 2009 at 1:07 PM, <markrmil...@apache.org> wrote: > Author: markrmiller > Date: Fri Oct 23 17:07:22 2009 > New Revision: 829128 > > URL: http://svn.apache.org/viewvc?rev=829128&view=rev > Log: > LUCENE-2003: Highlighter doesn't respect position increments other than 1 > with PhraseQuerys > > Modified: > > lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java > > Modified: > lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java > URL: > http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java?rev=829128&r1=829127&r2=829128&view=diff > ============================================================================== > --- > lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java > (original) > +++ > lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java > Fri Oct 23 17:07:22 2009 > @@ -109,13 +109,32 @@ > } > } > } else if (query instanceof PhraseQuery) { > - Term[] phraseQueryTerms = ((PhraseQuery) query).getTerms(); > + PhraseQuery phraseQuery = ((PhraseQuery) query); > + Term[] phraseQueryTerms = phraseQuery.getTerms(); > SpanQuery[] clauses = new SpanQuery[phraseQueryTerms.length]; > for (int i = 0; i < phraseQueryTerms.length; i++) { > clauses[i] = new SpanTermQuery(phraseQueryTerms[i]); > } > + int slop = phraseQuery.getSlop(); > + int[] positions = phraseQuery.getPositions(); > + // add largest position increment to slop > + if (positions.length > 0) { > + int lastPos = positions[0]; > + int largestInc = 0; > + int sz = positions.length; > + for (int i = 1; i < sz; i++) { > + int pos = positions[i]; > + int inc = pos - lastPos; > + if (inc > largestInc) { > + largestInc = inc; > + } > + lastPos = pos; > + } > + if(largestInc > 1) { > + slop += largestInc; > + } > + } > > - int slop = ((PhraseQuery) query).getSlop(); > boolean inorder = false; > > if (slop == 0) { > > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org