diff options
Diffstat (limited to 'inc/fulltext.php')
-rw-r--r-- | inc/fulltext.php | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/inc/fulltext.php b/inc/fulltext.php index f477e826e..1a525f743 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -379,6 +379,11 @@ function ft_snippet($id,$highlight){ * Wraps a search term in regex boundary checks. */ function ft_snippet_re_preprocess($term) { + // do not process asian terms where word boundaries are not explicit + if(preg_match('/'.IDX_ASIAN.'/u',$term)){ + return $term; + } + if(substr($term,0,2) == '\\*'){ $term = substr($term,2); }else{ @@ -713,7 +718,7 @@ function ft_termParser($Indexer, $term, $consider_asian = true, $phrase_mode = f // successive asian characters need to be searched as a phrase $words = preg_split('/('.IDX_ASIAN.'+)/u', $term, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); foreach ($words as $word) { - if (preg_match('/'.IDX_ASIAN.'/u', $word)) $phrase_mode = true; + $phrase_mode = $phrase_mode ? true : preg_match('/'.IDX_ASIAN.'/u', $word); $parsed .= ft_termParser($Indexer, $word, false, $phrase_mode); } } else { @@ -735,4 +740,4 @@ function ft_termParser($Indexer, $term, $consider_asian = true, $phrase_mode = f return $parsed; } -//Setup VIM: ex: et ts=4 enc=utf-8 : +//Setup VIM: ex: et ts=4 : |