diff --git a/src/grl-registry.c b/src/grl-registry.c
index de04000..9b4b110 100644
--- a/src/grl-registry.c
+++ b/src/grl-registry.c
@@ -388,8 +388,23 @@ set_source_rank (GrlRegistry *registry, GrlSource *source)
     GPOINTER_TO_INT (g_hash_table_lookup (registry->priv->ranks,
                                           grl_source_get_id (source)));
   if (!rank) {
+    GHashTableIter iter;
+    g_hash_table_iter_init(&iter, registry->priv->ranks);
+
+    const gchar *key = NULL;
+    while (g_hash_table_iter_next(&iter, (gpointer *) &key, NULL)) {
+      if (g_pattern_match_simple((const gchar*) key, grl_source_get_id(source))) {
+        rank = GPOINTER_TO_INT (g_hash_table_lookup (registry->priv->ranks,
+                                                     (const gchar*) key));
+        break;
+      }
+    }
+  }
+
+  if (!rank) {
     rank = GRL_RANK_DEFAULT;
   }
+
   g_object_set (source, "rank", rank, NULL);
   GRL_DEBUG ("Source rank '%s' : %d", grl_source_get_id (source), rank);
 }
