--- a/share/minizinc/Preferences.json
+++ b/share/minizinc/Preferences.json
@@ -1,6 +1,6 @@
 {
   "tagDefaults": [
-    ["", "org.gecode.gecode"]
+    ["", "org.gecode.gecode,ortools"]
   ],
   "solverDefaults" : [
     ["org.minizinc.mip.gurobi", "-DQuadrIntSolverConfig=true", ""],
--- a/lib/solver_config.cpp
+++ b/lib/solver_config.cpp
@@ -808,6 +808,7 @@
   std::set<int> selectedSolvers;
 
   std::string firstTag;
+  TagMap::const_iterator tag_it;
   if (tags.empty()) {
     DefaultMap::const_iterator def_it = _tagDefault.find("");
     if (def_it != _tagDefault.end()) {
@@ -815,10 +816,21 @@
     } else {
       throw ConfigException("no solver selected");
     }
+    size_t start = 0, end;
+    do {
+      end = firstTag.find(',', start);
+      const std::string sub = firstTag.substr(start, end);
+      tag_it = _tags.find(get_tag(sub));
+      if (tag_it != _tags.cend()) {
+        firstTag = sub;
+        break;
+      }
+      start = end+1;
+    } while (end != firstTag.npos);
   } else {
     firstTag = tags[0];
+    tag_it = _tags.find(get_tag(firstTag));
   }
-  TagMap::const_iterator tag_it = _tags.find(get_tag(firstTag));
 
   if (tag_it == _tags.end()) {
     throw ConfigException("no solver with tag " + get_tag(firstTag) + " found");
