From 43d58b76484489688582f407d73054a3d4ddcba1 Mon Sep 17 00:00:00 2001
From: Michael Hamann <michael@content-space.de>
Date: Sat, 15 Feb 2014 15:34:03 +0100
Subject: [PATCH] Fix the snippet search to continue after the previous match

---
 inc/fulltext.php | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/inc/fulltext.php b/inc/fulltext.php
index fdaa1a19b..87b5a7370 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -354,12 +354,12 @@ function ft_snippet($id,$highlight){
             }
 
             // set $offset for next match attempt
-            //   substract strlen to avoid splitting a potential search success,
-            //   this is an approximation as the search pattern may match strings
-            //   of varying length and it will fail if the context snippet
-            //   boundary breaks a matching string longer than the current match
-            $utf8_offset = $utf8_idx + $post;
-            $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post));
+            // continue matching after the current match
+            // if the current match is not the longest possible match starting at the current offset
+            // this prevents further matching of this snippet but for possible matches of length
+            // smaller than match length + context (at least 50 characters) this match is part of the context
+            $utf8_offset = $utf8_idx + $utf8_len;
+            $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$utf8_len));
             $offset = utf8_correctIdx($text,$offset);
         }
 
-- 
GitLab