From 3e2637351da9559a4aa420004ac90e9fe30477ef Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Mon, 14 Feb 2011 15:46:48 -0500 Subject: [PATCH] Fulltext search over contact fields. Attention: DATABASE SCHEMA CHANGED\! --- program/include/rcube_addressbook.php | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php index 648ef83..d1b0f62 100644 --- a/program/include/rcube_addressbook.php +++ b/program/include/rcube_addressbook.php @@ -32,6 +32,7 @@ const ERROR_NO_CONNECTION = 2; const ERROR_INCOMPLETE = 3; const ERROR_SAVING = 4; + const ERROR_SEARCH = 5; /** public properties (mandatory) */ public $primary_key; @@ -384,6 +385,26 @@ return $out; } + + + /** + * Normalize the given string for fulltext search. + * Currently only optimized for Latin-1 characters; to be extended + * + * @param string Input string (UTF-8) + * @return string Normalized string + */ + protected static function normalize_string($str) + { + $norm = strtolower(strtr(utf8_decode($str), + '��������������������������������������������������', + 'ccaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy')); + + return preg_replace( + array('/[\s;\+\-\/]+/i', '/(\d)\s+(\d)/', '/\s\w{1,3}\s/'), + array(' ', '\\1\\2', ' '), + $norm); + } } -- Gitblit v1.9.1