Index: branches/release-34/lib/MT/App/Search/TagSearch.pm
===================================================================
--- branches/release-34/lib/MT/App/Search/TagSearch.pm (revision 1516)
+++ branches/release-34/lib/MT/App/Search/TagSearch.pm (revision 1855)
@@ -35,5 +35,6 @@
 
     my $format = $app->param('format') || q();
-    my $method = "render$format";
+    my $method = "render";
+    $method .= $format if $format && $app->can($method . $format);
     $out = $app->$method( $count, $iter );
 
@@ -195,10 +196,24 @@
     );
 
+    my $desc = 'descend' eq $app->{searchparam}{SearchResultDisplay} ? 'DESC' : 'ASC';
+    my @sort;
     my $sort = $params->{'sort'};
     if ( $sort !~ /\w+\!$/ && $app->{searchparam}{SearchSortBy} ) {
         my $sort_by = $app->{searchparam}{SearchSortBy};
-        $sort_by =~ s/[\w\-\.]+//g;
-        $sort = $sort_by;
-    }
+        $sort_by =~ s/[^\w\-\.\,]+//g;
+        if ( $sort_by ) {
+            my @sort_bys = split ',', $sort_by;
+            foreach my $key ( @sort_bys ) {
+                push @sort, {
+                    desc   => $desc,
+                    column => $key
+                };
+            }
+        }
+    }
+    push @sort, {
+        desc   => $desc,
+        column => $sort
+    };
 
     my %args = (
@@ -206,15 +221,6 @@
       $limit  ? ( 'limit' => $limit ) : (),
       $offset ? ( 'offset' => $offset ) : (),
-      $sort   ? ( 'sort' => [
-            { desc   => 'descend' eq $app->{searchparam}{SearchResultDisplay} ? 'DESC' : 'ASC',
-              column => $sort }
-        ] ) : (),
+      @sort   ? ( 'sort' => \@sort ) : (),
     );
-
-    if ( exists $app->{searchparam}{IncludeBlogs} ) {
-        unshift @{ $args{'sort'} },
-          { desc => 'ASC',
-            column    => 'blog_id' };
-    }
 
     my $blog_class = $app->model('blog');
