I have written a new Fragmenter since we need fragments for hitlines to be on sentence boundaries and not cross paragraphs.
When using it with org.apache.lucene.search.highlight.Highlighter, I get hitlines that starts with ". ", "? ", "! "...
Consider the text "A b c d e. F g h i j! K l m n o. "
which become the tokenstream : (A) (b) (c) (d) (e) (F) (g) (h) (j) (K) (l) (m) (o)
If the fragmenter return isNewFragment() = true on F and K and Highlighter pick the middle fragment, lets say we search on "g" the hitline becomes:
". F <B>g</B> h i j"
The reason, it seems, is that the offset to the fragment boundaries found by taking the endOffset of the last token in a fragment ,
not the startOffset of the first.