lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Terje Eggestad (Commented) (JIRA)" <>
Subject [jira] [Commented] (LUCENE-2587) Highlighter picks wrong offset for fragment boundaries
Date Thu, 03 Nov 2011 09:01:34 GMT


Terje Eggestad commented on LUCENE-2587:

Sorry for the delay in responding, it's been a year since I looked at this...

I don't have a complete test case as of right now, but I'll upload my fragmenter. 
The code is a bit messy, but works by finding all fragment boundaries on start(text,tokenstream)
The algorithm is a s follows
- first find paragraphs (marked as "\n\n")
- then chop up paragraphs on "." as close to max length as possible
- if fragments(sentences) are too long, try breaking on "," or ";", else on white space

The problem comes since the uses the end char
offset of the last token in the  previous fragment, +1 , as the start char offset in the TextFragment.textStartPos
As I'm rereading the code now, this is "hidden" beneath the length calculations
of a fragment, which is is calculated as: (end char offset of last token) - (start char offset
of first token), hence the stuff in between which is not in a token ultimately gets prepended
on the resulting text.

I ultimately did a workaround by replacing leading ".", ",", "?", "!", then a trim() on the
String Highlighter.getBestFragment() returns...

> Highlighter picks wrong offset for fragment boundaries
> ------------------------------------------------------
>                 Key: LUCENE-2587
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: modules/highlighter
>    Affects Versions: 3.0.2
>         Environment: Java 6 + Lucene 3.0.2
>            Reporter: Terje Eggestad
>            Priority: Trivial
>              Labels: newdev
>         Attachments:
> 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, 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) (i) (j) (K) (l) (m) (n)
> 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. 
> TJ

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message