diff options
author | Gerrit Uitslag <klapinklapin@gmail.com> | 2014-02-23 22:07:26 +0100 |
---|---|---|
committer | Gerrit Uitslag <klapinklapin@gmail.com> | 2014-02-23 22:07:26 +0100 |
commit | 8fcb305db0081dacd8e8ad0583da5ecc6c6837dc (patch) | |
tree | 928fc44fde692835bca9dd304ebcb17cdd710ac8 /inc/fulltext.php | |
parent | 4d5954c8d1f8bcc5450f8cf70d8139cf5a1e697d (diff) | |
parent | 5d873dd4ce31c79403a01ac0e40ff148be282592 (diff) | |
download | rpg-8fcb305db0081dacd8e8ad0583da5ecc6c6837dc.tar.gz rpg-8fcb305db0081dacd8e8ad0583da5ecc6c6837dc.tar.bz2 |
Merge remote-tracking branch 'origin/master' into diff_navigation
Conflicts:
inc/html.php
Diffstat (limited to 'inc/fulltext.php')
-rw-r--r-- | inc/fulltext.php | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/inc/fulltext.php b/inc/fulltext.php index bd8e6b866..87b5a7370 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -333,7 +333,7 @@ function ft_snippet($id,$highlight){ $pre = min($pre,100-$post); } else if ($post>50) { $post = min($post, 100-$pre); - } else { + } else if ($offset == 0) { // both are less than 50, means the context is the whole string // make it so and break out of this loop - there is no need for the // complex snippet calculations @@ -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); } |