diff --git a/app/Http/QueryBuilder/SearchQueryBuilderPeople.php b/app/Http/QueryBuilder/SearchQueryBuilderPeople.php index ba1d6ed..80cd104 100644 --- a/app/Http/QueryBuilder/SearchQueryBuilderPeople.php +++ b/app/Http/QueryBuilder/SearchQueryBuilderPeople.php @@ -34,10 +34,11 @@ class SearchQueryBuilderPeople implements SearchQueryBuilderInterface if (!empty($query) && is_null($letter)) { $results = $results - ->where('name', 'like', "%{$query}%") - ->orWhere('given_name', 'like', "%{$query}%") - ->orWhere('family_name', 'like', "%{$query}%") - ->orWhere('alternate_names', 'like', "%{$query}%"); + ->whereRaw([ + '$text' => [ + '$search' => $query + ] + ]); } if (!is_null($letter)) { diff --git a/database/migrations/2020_06_08_093231_create_people_table.php b/database/migrations/2020_06_08_093231_create_people_table.php index bb7c42b..a88acf1 100644 --- a/database/migrations/2020_06_08_093231_create_people_table.php +++ b/database/migrations/2020_06_08_093231_create_people_table.php @@ -29,6 +29,24 @@ class CreatePeopleTable extends Migration $table->index('voice_acting_roles'); $table->index('anime_staff_positions'); $table->index('published_manga'); + $table->index([ + 'name' => 'text', + 'given_name' => 'text', + 'family_name' => 'text', + 'alternate_names' => 'text', + ], + 'people_search_index', + null, + [ + 'weights' => [ + 'name' => 50, + 'given_name' => 10, + 'family_name' => 10, + 'alternate_names' => 1 + ], + 'name' => 'people_search_index' + ] + ); }); }