diff --git a/search/fragmenter_simple_test.go b/search/fragmenter_simple_test.go index 32492aca..b6b5b913 100644 --- a/search/fragmenter_simple_test.go +++ b/search/fragmenter_simple_test.go @@ -175,7 +175,7 @@ func TestSimpleFragmenter(t *testing.T) { }, } - fragmenter := NewSimpleFragmenter() + fragmenter := NewSimpleFragmenterWithSize(100) for _, test := range tests { fragments := fragmenter.Fragment(test.orig, test.ot) if !reflect.DeepEqual(fragments, test.fragments) { diff --git a/search/highlighter_simple.go b/search/highlighter_simple.go index 9c096b12..db4125bd 100644 --- a/search/highlighter_simple.go +++ b/search/highlighter_simple.go @@ -116,7 +116,14 @@ func (s *SimpleHighlighter) BestFragmentsInField(dm *DocumentMatch, doc *documen // now that we have the best fragments, we can format them formattedFragments := make([]string, len(bestFragments)) for i, fragment := range bestFragments { - formattedFragments[i] = s.sep + s.formatter.Format(fragment, dm.Locations[field]) + s.sep + formattedFragments[i] = "" + if fragment.start != 0 { + formattedFragments[i] += s.sep + } + formattedFragments[i] += s.formatter.Format(fragment, dm.Locations[field]) + if fragment.end != len(fragment.orig) { + formattedFragments[i] += s.sep + } } if dm.Fragments == nil { diff --git a/search/highlighter_simple_test.go b/search/highlighter_simple_test.go index 547fb0f5..751f8a81 100644 --- a/search/highlighter_simple_test.go +++ b/search/highlighter_simple_test.go @@ -42,7 +42,7 @@ func TestSimpleHighlighter(t *testing.T) { }, } - expectedFragment := DEFAULT_SEPARATOR + "the " + DEFAULT_ANSI_HIGHLIGHT + "quick" + reset + " brown " + DEFAULT_ANSI_HIGHLIGHT + "fox" + reset + " jumps over the lazy dog" + DEFAULT_SEPARATOR + expectedFragment := "the " + DEFAULT_ANSI_HIGHLIGHT + "quick" + reset + " brown " + DEFAULT_ANSI_HIGHLIGHT + "fox" + reset + " jumps over the lazy dog" doc := document.NewDocument("a").AddField(document.NewTextField("desc", []uint64{}, []byte("the quick brown fox jumps over the lazy dog"))) fragment := highlighter.BestFragmentInField(&docMatch, doc, "desc") @@ -143,6 +143,7 @@ Etiam vel augue vel nisl commodo suscipit et ac nisl. Quisque eros diam, porttit } highlighter := NewSimpleHighlighter() + highlighter.SetFragmenter(NewSimpleFragmenterWithSize(100)) fragments := highlighter.BestFragmentsInField(&docMatch, doc, "full", 5) if !reflect.DeepEqual(fragments, expectedFragments) {