diff --git a/app/views/search/_global_results.html.haml b/app/views/search/_global_results.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..6e6feeb6c5a7ac5f61b0119a879c73866fbdf969
--- /dev/null
+++ b/app/views/search/_global_results.html.haml
@@ -0,0 +1,5 @@
+.search_results
+  %ul.bordered-list
+    = render partial: "search/results/project", collection: @projects
+    = render partial: "search/results/merge_request", collection: @merge_requests
+    = render partial: "search/results/issue", collection: @issues
diff --git a/app/views/search/_project_results.html.haml b/app/views/search/_project_results.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..8d04dd27cca9ca330aeae7521dbe6fa38154efc0
--- /dev/null
+++ b/app/views/search/_project_results.html.haml
@@ -0,0 +1,17 @@
+%ul.nav.nav-pills
+  %li{class: ("active" if params[:search_code].present?)}
+    = link_to search_path(params.merge(search_code: true)) do
+      Repository Code
+  %li{class: ("active" if params[:search_code].blank?)}
+    = link_to search_path(params.merge(search_code: nil)) do
+      Everything else
+
+.search_results
+  - if params[:search_code].present?
+    .blob-results
+      = render partial: "search/results/blob", collection: @blobs
+      = paginate @blobs, theme: 'gitlab'
+  - else
+    %ul.bordered-list
+      = render partial: "search/results/merge_request", collection: @merge_requests
+      = render partial: "search/results/issue", collection: @issues
diff --git a/app/views/search/_result.html.haml b/app/views/search/_result.html.haml
deleted file mode 100644
index 5f7540d1b16c61bfed6f061ebfddeecd8019aa38..0000000000000000000000000000000000000000
--- a/app/views/search/_result.html.haml
+++ /dev/null
@@ -1,62 +0,0 @@
-%fieldset
-  %legend
-    Search results
-    %span.cgray (#{@total_results})
-
-- if @project
-  %ul.nav.nav-pills
-    %li{class: ("active" if params[:search_code].present?)}
-      = link_to search_path(params.merge(search_code: true)) do
-        Repository Code
-    %li{class: ("active" if params[:search_code].blank?)}
-      = link_to search_path(params.merge(search_code: nil)) do
-        Everything else
-
-.search_results
-  %ul.bordered-list
-    - @projects.each do |project|
-      %li
-        project:
-        = link_to project do
-          %strong.term= project.name_with_namespace
-    - @merge_requests.each do |merge_request|
-      %li
-        merge request:
-        = link_to [merge_request.target_project, merge_request] do
-          %span ##{merge_request.iid}
-          %strong.term
-            = truncate merge_request.title, length: 50
-        - if merge_request.for_fork?
-          %span.light (#{merge_request.source_project.name_with_namespace}:#{merge_request.source_branch} → #{merge_request.target_project.name_with_namespace}:#{merge_request.target_branch})
-        - else
-          %span.light (#{merge_request.source_branch} → #{merge_request.target_branch})
-        - if merge_request.closed?
-          %span.label Closed
-
-    - @issues.each do |issue|
-      %li
-        issue:
-        = link_to [issue.project, issue] do
-          %span ##{issue.iid}
-          %strong.term
-            = truncate issue.title, length: 50
-        %span.light (#{issue.project.name_with_namespace})
-        - if issue.closed?
-          %span.label Closed
-
-    - @wiki_pages.each do |wiki_page|
-      %li
-        wiki:
-        = link_to project_wiki_path(wiki_page.project, wiki_page) do
-          %strong.term
-            = truncate wiki_page.title, length: 50
-        %span.light (#{wiki_page.project.name_with_namespace})
-
-    - @blobs.each do |blob|
-      = render 'blob', blob: blob
-
-  = paginate @blobs, theme: 'gitlab'
-
-:javascript
-  $(".search_results .term").highlight("#{escape_javascript(params[:search])}");
-
diff --git a/app/views/search/_results.html.haml b/app/views/search/_results.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..75f134aae665cb81eb37eec71941b9c859864728
--- /dev/null
+++ b/app/views/search/_results.html.haml
@@ -0,0 +1,13 @@
+%fieldset
+  %legend
+    Search results
+    %span.cgray (#{@total_results})
+
+- if @project
+  = render "project_results"
+- else
+  = render "global_results"
+
+:javascript
+  $(".search_results .term").highlight("#{escape_javascript(params[:search])}");
+
diff --git a/app/views/search/_blob.html.haml b/app/views/search/results/_blob.html.haml
similarity index 96%
rename from app/views/search/_blob.html.haml
rename to app/views/search/results/_blob.html.haml
index 559fdd794fc9b8ec2d7be5942c7781f8764c56e9..a2e4a00b7189f49f3c2cd4494593341ede94a0b4 100644
--- a/app/views/search/_blob.html.haml
+++ b/app/views/search/results/_blob.html.haml
@@ -1,4 +1,4 @@
-%li
+.blob-result
   .file-holder
     .file-title
       = link_to project_blob_path(@project, tree_join(blob.ref, blob.filename), :anchor => "L" + blob.startline.to_s) do
diff --git a/app/views/search/results/_issue.html.haml b/app/views/search/results/_issue.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..7a24b76bced1b04dcdbb7a7efa354640252e9efc
--- /dev/null
+++ b/app/views/search/results/_issue.html.haml
@@ -0,0 +1,9 @@
+%li
+  issue:
+  = link_to [issue.project, issue] do
+    %span ##{issue.iid}
+    %strong.term
+      = truncate issue.title, length: 50
+  %span.light (#{issue.project.name_with_namespace})
+  - if issue.closed?
+    %span.label Closed
diff --git a/app/views/search/results/_merge_request.html.haml b/app/views/search/results/_merge_request.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..22d7587f6c1d645e659cccdd6cd8d3f4f4d1d35d
--- /dev/null
+++ b/app/views/search/results/_merge_request.html.haml
@@ -0,0 +1,12 @@
+%li
+  merge request:
+  = link_to [merge_request.target_project, merge_request] do
+    %span ##{merge_request.iid}
+    %strong.term
+      = truncate merge_request.title, length: 50
+  - if merge_request.for_fork?
+    %span.light (#{merge_request.source_project.name_with_namespace}:#{merge_request.source_branch} → #{merge_request.target_project.name_with_namespace}:#{merge_request.target_branch})
+  - else
+    %span.light (#{merge_request.source_branch} → #{merge_request.target_branch})
+  - if merge_request.closed?
+    %span.label Closed
diff --git a/app/views/search/results/_project.html.haml b/app/views/search/results/_project.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..abc86c72bef1fb53cf5b0d9f91f90d57a1c26f7e
--- /dev/null
+++ b/app/views/search/results/_project.html.haml
@@ -0,0 +1,7 @@
+%li
+  project:
+  = link_to project do
+    %strong.term= project.name_with_namespace
+  - if project.description.present?
+    –
+    %span.light.term= project.description
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index f1f65981b37f8e6f2ed4cfb16cc016d1e254966b..25e8c00888ac3317773a0a5efba9c9251845bdb0 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -13,4 +13,4 @@
 
   .results.prepend-top-10
     - if params[:search].present?
-      = render 'search/result'
+      = render 'search/results'