Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 20589 invoked from network); 23 Oct 2009 17:07:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 23 Oct 2009 17:07:46 -0000 Received: (qmail 35506 invoked by uid 500); 23 Oct 2009 17:07:46 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 35452 invoked by uid 500); 23 Oct 2009 17:07:46 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 35443 invoked by uid 99); 23 Oct 2009 17:07:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Oct 2009 17:07:46 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Oct 2009 17:07:44 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 1E4612388898; Fri, 23 Oct 2009 17:07:23 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r829128 - /lucene/java/branches/lucene_2_9/contrib/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java Date: Fri, 23 Oct 2009 17:07:23 -0000 To: java-commits@lucene.apache.org From: markrmiller@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091023170723.1E4612388898@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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) {