diff --git a/config/searchy.php b/config/searchy.php index ccbf005..06fceac 100755 --- a/config/searchy.php +++ b/config/searchy.php @@ -12,6 +12,10 @@ return [ 'class' => 'TomLingham\Searchy\SearchDrivers\FuzzySearchDriver', ], + 'ufuzzy' => [ + 'class' => 'TomLingham\Searchy\SearchDrivers\FuzzySearchUnicodeDriver', + ], + 'simple' => [ 'class' => 'TomLingham\Searchy\SearchDrivers\SimpleSearchDriver', ], diff --git a/src/Matchers/AcronymUnicodeMatcher.php b/src/Matchers/AcronymUnicodeMatcher.php new file mode 100644 index 0000000..94d7a14 --- /dev/null +++ b/src/Matchers/AcronymUnicodeMatcher.php @@ -0,0 +1,31 @@ +formatSearchString($rawString); + + return "IF( REPLACE($column, '\.', '') {$this->operator} '$searchString', ROUND({$this->multiplier} * ( CHAR_LENGTH( '$rawString' ) / CHAR_LENGTH( REPLACE($column, ' ', '') ))), 0)"; + } +} diff --git a/src/Matchers/StudlyCaseUnicodeMatcher.php b/src/Matchers/StudlyCaseUnicodeMatcher.php new file mode 100644 index 0000000..e8444ec --- /dev/null +++ b/src/Matchers/StudlyCaseUnicodeMatcher.php @@ -0,0 +1,36 @@ +operator} '{$this->formatSearchString($searchString)}', {$this->multiplier}, 0)"; + } +} diff --git a/src/SearchDrivers/FuzzySearchUnicodeDriver.php b/src/SearchDrivers/FuzzySearchUnicodeDriver.php new file mode 100644 index 0000000..d3a3b41 --- /dev/null +++ b/src/SearchDrivers/FuzzySearchUnicodeDriver.php @@ -0,0 +1,20 @@ + 100, + \TomLingham\Searchy\Matchers\StartOfStringMatcher::class => 50, + \TomLingham\Searchy\Matchers\AcronymUnicodeMatcher::class => 42, + \TomLingham\Searchy\Matchers\ConsecutiveCharactersUnicodeMatcher::class => 40, + \TomLingham\Searchy\Matchers\StartOfWordsMatcher::class => 35, + \TomLingham\Searchy\Matchers\StudlyCaseUnicodeMatcher::class => 32, + \TomLingham\Searchy\Matchers\InStringMatcher::class => 30, + \TomLingham\Searchy\Matchers\TimesInStringMatcher::class => 8, + ]; +}