diff --git a/app/Models/Language/Language.php b/app/Models/Language/Language.php index 42c55e171..8b96c650b 100644 --- a/app/Models/Language/Language.php +++ b/app/Models/Language/Language.php @@ -484,12 +484,12 @@ public function scopeFilterableByNameAndAccessGroup( $formatted_name = "+$name*"; $lang = Language::from('languages', 'lang') - ->select('lang.id as id') + ->selectRaw('lang.id as id, (MATCH (lang.name) against (? IN BOOLEAN MODE) + IF(lang.name LIKE ?, 1000, 0)) as score', [$name, "$name%"]) ->whereRaw('MATCH (lang.name) against (? IN BOOLEAN MODE)', [$formatted_name]) ->isContentAvailable($access_group_ids, $bible_fileset_filters); $lang_trans = LanguageTranslation::from('language_translations', 'lang_trans') - ->select('lang_trans.language_source_id as id') + ->selectRaw('lang_trans.language_source_id as id, (MATCH (lang_trans.name) against (? IN BOOLEAN MODE) + IF(lang_trans.name LIKE ?, 1000, 0)) as score', [$name, "$name%"]) ->whereRaw('MATCH (lang_trans.name) against (? IN BOOLEAN MODE)', [$formatted_name]) ->isContentAvailable($access_group_ids, $bible_fileset_filters) ->hasPriority(); @@ -498,7 +498,8 @@ public function scopeFilterableByNameAndAccessGroup( ->unionAll($lang_trans); $lang_union_all_group = \DB::table($lang_union_query, 'lang_and_trans_group') - ->groupBy('lang_and_trans_group.id'); + ->groupBy('lang_and_trans_group.id') + ->orderBy('lang_and_trans_group.score', 'DESC'); return $query->joinSub( $lang_union_all_group,