diff --git a/app/Http/QueryBuilder/SearchQueryBuilderCharacter.php b/app/Http/QueryBuilder/SearchQueryBuilderCharacter.php index 836072a..ec9721d 100644 --- a/app/Http/QueryBuilder/SearchQueryBuilderCharacter.php +++ b/app/Http/QueryBuilder/SearchQueryBuilderCharacter.php @@ -34,9 +34,11 @@ class SearchQueryBuilderCharacter implements SearchQueryBuilderInterface if (!empty($query) && is_null($letter)) { $results = $results - ->where('name', 'like', "%{$query}%") - ->orWhere('name_kanji', 'like', "%{$query}%") - ->orWhere('nicknames', 'like', "%{$query}%"); + ->whereRaw([ + '$text' => [ + '$search' => $query + ] + ]); } if (!is_null($letter)) { diff --git a/database/migrations/2020_06_08_093529_create_characters_table.php b/database/migrations/2020_06_08_093529_create_characters_table.php index 6176d02..6fa7dec 100644 --- a/database/migrations/2020_06_08_093529_create_characters_table.php +++ b/database/migrations/2020_06_08_093529_create_characters_table.php @@ -23,9 +23,20 @@ class CreateCharactersTable extends Migration $table->index('nicknames'); $table->integer('member_favorites')->index('member_favorites'); $table->string('about')->nullable(); - $table->index('animeography'); - $table->index('mangaography'); - $table->index('voice_actors'); + $table->index([ + 'name' => 'text', + 'nicknames' => 'text', + ], + 'characters_search_index', + null, + [ + 'weights' => [ + 'name' => 50, + 'nicknames' => 10, + ], + 'name' => 'characters_search_index' + ] + ); }); }