--- C:\libraries\lucene-2.3.2-src-highlighter\contrib\highlighter\src\java\org\apache\lucene\search\highlight\SimpleSpanFragmenter.old Wed Sep 17 09:50:08 2008 +++ C:\libraries\lucene-2.3.2-src-highlighter\contrib\highlighter\src\java\org\apache\lucene\search\highlight\SimpleSpanFragmenter.java Wed Sep 17 15:10:36 2008 @@ -33,7 +33,8 @@ private int position = -1; private SpanScorer spanScorer; private int waitForPos = -1; - + private int textSize; + /** * @param spanscorer SpanScorer that was used to score hits */ @@ -71,12 +72,13 @@ if (((PositionSpan) positionSpans.get(i)).start == position) { waitForPos = ((PositionSpan) positionSpans.get(i)).end + 1; - return true; + break; } } } - boolean isNewFrag = token.endOffset() >= (fragmentSize * currentNumFrags); + boolean isNewFrag = token.endOffset() >= (fragmentSize * currentNumFrags) && + (textSize - token.endOffset()) >= (fragmentSize >>> 1); if (isNewFrag) { currentNumFrags++; @@ -89,7 +91,8 @@ * @see org.apache.lucene.search.highlight.Fragmenter#start(java.lang.String) */ public void start(String originalText) { - position = 0; + position = -1; currentNumFrags = 1; + textSize = originalText.length(); } }