Index: contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/SimpleFragListBuilder.java =================================================================== --- contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/SimpleFragListBuilder.java (revision 805400) +++ contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/SimpleFragListBuilder.java (working copy) @@ -56,11 +56,11 @@ wpil.clear(); wpil.add( phraseInfo ); + int firstOffset = phraseInfo.getStartOffset(); int st = phraseInfo.getStartOffset() - MARGIN < startOffset ? startOffset : phraseInfo.getStartOffset() - MARGIN; int en = st + fragCharSize; - startOffset = en; - + int lastEndOffset = phraseInfo.getEndOffset(); while( true ){ if( ite.hasNext() ){ phraseInfo = ite.next(); @@ -69,11 +69,22 @@ } else break; - if( phraseInfo.getEndOffset() <= en ) + if( phraseInfo.getEndOffset() <= en ){ wpil.add( phraseInfo ); + lastEndOffset = phraseInfo.getEndOffset(); + } else break; } + int matchLen = lastEndOffset - firstOffset; + //now recalculate the start and end position to "center" the result + int newMargin = (fragCharSize-matchLen)/2; + st = firstOffset - newMargin; + if(st