Cleanup and remove appostrophies in search string by default
This commit is contained in:
@ -15,9 +15,8 @@ class Searchy extends Facade
|
||||
*/
|
||||
protected static function getFacadeAccessor()
|
||||
{
|
||||
if (!static::$app) {
|
||||
if (!static::$app)
|
||||
static::$app = SearchyServiceProvider::make();
|
||||
}
|
||||
|
||||
return 'searchy';
|
||||
}
|
||||
|
@ -34,9 +34,6 @@ class ConsecutiveCharactersMatcher extends BaseMatcher
|
||||
{
|
||||
$searchString = $this->formatSearchString( $rawString );
|
||||
|
||||
$query = "IF($column {$this->operator} '$searchString', ROUND({$this->multiplier} * (CHAR_LENGTH( '$rawString' ) / CHAR_LENGTH( REPLACE($column, ' ', '') ))), 0)";
|
||||
|
||||
return $query;
|
||||
return "IF($column {$this->operator} '$searchString', ROUND({$this->multiplier} * (CHAR_LENGTH( '$rawString' ) / CHAR_LENGTH( REPLACE($column, ' ', '') ))), 0)";
|
||||
}
|
||||
|
||||
}
|
@ -12,13 +12,6 @@
|
||||
class LevenshteinMatcher extends BaseMatcher
|
||||
{
|
||||
|
||||
private $sensitivity;
|
||||
|
||||
public function setSensitivity( $sensitivity )
|
||||
{
|
||||
$this->sensitivity = $sensitivity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $column
|
||||
* @param $searchString
|
||||
@ -26,7 +19,7 @@ class LevenshteinMatcher extends BaseMatcher
|
||||
*/
|
||||
public function buildQueryString( $column, $searchString )
|
||||
{
|
||||
return "levenshtein($column, '$searchString', {$this->sensitivity})";
|
||||
return "levenshtein($column, '$searchString')";
|
||||
}
|
||||
|
||||
}
|
@ -11,6 +11,7 @@
|
||||
|
||||
class StudlyCaseMatcher extends BaseMatcher
|
||||
{
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
@ -28,8 +29,6 @@ class StudlyCaseMatcher extends BaseMatcher
|
||||
|
||||
public function buildQueryString( $column, $searchString )
|
||||
{
|
||||
$query = "IF( CHAR_LENGTH( TRIM($column)) = CHAR_LENGTH( REPLACE( TRIM($column), ' ', '')) AND $column {$this->operator} '{$this->formatSearchString($searchString)}', {$this->multiplier}, 0)";
|
||||
|
||||
return $query;
|
||||
return "IF( CHAR_LENGTH( TRIM($column)) = CHAR_LENGTH( REPLACE( TRIM($column), ' ', '')) AND $column {$this->operator} '{$this->formatSearchString($searchString)}', {$this->multiplier}, 0)";
|
||||
}
|
||||
}
|
@ -78,6 +78,7 @@ class SearchBuilder {
|
||||
*/
|
||||
private function makeDriver()
|
||||
{
|
||||
|
||||
// Check if default driver is being overridden, otherwise
|
||||
// load the default
|
||||
if ( $this->driverName ){
|
||||
@ -86,9 +87,11 @@ class SearchBuilder {
|
||||
$driverName = \Config::get('searchy::default');
|
||||
}
|
||||
|
||||
|
||||
// Gets the details for the selected driver from the configuration file
|
||||
$driverMap = \Config::get("searchy::drivers.$driverName");
|
||||
|
||||
|
||||
// Create a new instance of the selected drivers 'class' and pass
|
||||
// through table and fields to search
|
||||
return new $driverMap['class']( $this->table, $this->searchFields );
|
||||
|
@ -66,9 +66,8 @@ abstract class BaseSearchDriver implements SearchDriverInterface {
|
||||
$query[] = $this->buildSelectCriteria( $searchField );
|
||||
}
|
||||
|
||||
$query = \DB::raw(implode(' + ', $query) . ' AS ' . \Config::get('searchy::fieldName'));
|
||||
return \DB::raw(implode(' + ', $query) . ' AS ' . \Config::get('searchy::fieldName'));
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -109,7 +108,7 @@ abstract class BaseSearchDriver implements SearchDriverInterface {
|
||||
*/
|
||||
private function sanitize( $searchString )
|
||||
{
|
||||
return preg_replace(\Config::get('searchy::sanitizeRegEx'), '', $searchString);
|
||||
return preg_replace(\Config::get('searchy::sanitizeRegEx'), '', $searchString );
|
||||
}
|
||||
|
||||
}
|
@ -2,35 +2,11 @@
|
||||
|
||||
class LevenshteinSearchDriver extends BaseSearchDriver {
|
||||
|
||||
|
||||
private $sensitivity = 10;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $matchers = [
|
||||
'TomLingham\Searchy\Matchers\LevenshteinMatcher' => 100
|
||||
];
|
||||
|
||||
|
||||
public function setSensitivity( $sensitivity ){
|
||||
|
||||
$this->sensitivity = $sensitivity;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $column
|
||||
* @param $matcherClass
|
||||
* @param $multiplier
|
||||
* @return mixed
|
||||
*/
|
||||
protected function makeMatcher( $column, $matcherClass, $multiplier )
|
||||
{
|
||||
$matcher = new $matcherClass( $multiplier );
|
||||
$matcher->setSensitivity( $this->sensitivity );
|
||||
|
||||
return $matcher->buildQueryString( $column, $this->searchString );
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -6,7 +6,7 @@ return [
|
||||
|
||||
'sanitize' => true,
|
||||
|
||||
'sanitizeRegEx' => '/[%]+/i',
|
||||
'sanitizeRegEx' => '/[%\']+/i',
|
||||
|
||||
'fieldName' => 'relevance',
|
||||
|
||||
|
Reference in New Issue
Block a user