Commit a4a15970 authored by Stan Hu's avatar Stan Hu

Merge branch 'fj-11777-lower-search-count-limits' into 'master'

Improve performance of search by lowering counters

Closes gitlab-ee#11777

See merge request gitlab-org/gitlab-ce!32211
parents cbb35ea8 107ebb82
---
title: Lower search counters
merge_request: 11777
author:
type: performance
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
module Gitlab module Gitlab
class SearchResults class SearchResults
COUNT_LIMIT = 1001 COUNT_LIMIT = 101
COUNT_LIMIT_MESSAGE = "#{COUNT_LIMIT - 1}+"
attr_reader :current_user, :query, :per_page attr_reader :current_user, :query, :per_page
...@@ -60,7 +61,7 @@ module Gitlab ...@@ -60,7 +61,7 @@ module Gitlab
def formatted_limited_count(count) def formatted_limited_count(count)
if count >= COUNT_LIMIT if count >= COUNT_LIMIT
"#{COUNT_LIMIT - 1}+" COUNT_LIMIT_MESSAGE
else else
count.to_s count.to_s
end end
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::ProjectSearchResults do describe Gitlab::ProjectSearchResults do
include SearchHelpers
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project) }
let(:query) { 'hello world' } let(:query) { 'hello world' }
...@@ -31,10 +33,10 @@ describe Gitlab::ProjectSearchResults do ...@@ -31,10 +33,10 @@ describe Gitlab::ProjectSearchResults do
where(:scope, :count_method, :expected) do where(:scope, :count_method, :expected) do
'blobs' | :blobs_count | '1234' 'blobs' | :blobs_count | '1234'
'notes' | :limited_notes_count | '1000+' 'notes' | :limited_notes_count | max_limited_count
'wiki_blobs' | :wiki_blobs_count | '1234' 'wiki_blobs' | :wiki_blobs_count | '1234'
'commits' | :commits_count | '1234' 'commits' | :commits_count | '1234'
'projects' | :limited_projects_count | '1000+' 'projects' | :limited_projects_count | max_limited_count
'unknown' | nil | nil 'unknown' | nil | nil
end end
......
...@@ -4,6 +4,7 @@ require 'spec_helper' ...@@ -4,6 +4,7 @@ require 'spec_helper'
describe Gitlab::SearchResults do describe Gitlab::SearchResults do
include ProjectForksHelper include ProjectForksHelper
include SearchHelpers
let(:user) { create(:user) } let(:user) { create(:user) }
let!(:project) { create(:project, name: 'foo') } let!(:project) { create(:project, name: 'foo') }
...@@ -35,11 +36,11 @@ describe Gitlab::SearchResults do ...@@ -35,11 +36,11 @@ describe Gitlab::SearchResults do
using RSpec::Parameterized::TableSyntax using RSpec::Parameterized::TableSyntax
where(:scope, :count_method, :expected) do where(:scope, :count_method, :expected) do
'projects' | :limited_projects_count | '1000+' 'projects' | :limited_projects_count | max_limited_count
'issues' | :limited_issues_count | '1000+' 'issues' | :limited_issues_count | max_limited_count
'merge_requests' | :limited_merge_requests_count | '1000+' 'merge_requests' | :limited_merge_requests_count | max_limited_count
'milestones' | :limited_milestones_count | '1000+' 'milestones' | :limited_milestones_count | max_limited_count
'users' | :limited_users_count | '1000+' 'users' | :limited_users_count | max_limited_count
'unknown' | nil | nil 'unknown' | nil | nil
end end
...@@ -56,9 +57,9 @@ describe Gitlab::SearchResults do ...@@ -56,9 +57,9 @@ describe Gitlab::SearchResults do
where(:count, :expected) do where(:count, :expected) do
23 | '23' 23 | '23'
1000 | '1000' 100 | '100'
1001 | '1000+' 101 | max_limited_count
1234 | '1000+' 1234 | max_limited_count
end end
with_them do with_them do
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::SnippetSearchResults do describe Gitlab::SnippetSearchResults do
include SearchHelpers
let!(:snippet) { create(:snippet, content: 'foo', file_name: 'foo') } let!(:snippet) { create(:snippet, content: 'foo', file_name: 'foo') }
let(:results) { described_class.new(Snippet.all, 'foo') } let(:results) { described_class.new(Snippet.all, 'foo') }
...@@ -25,7 +27,7 @@ describe Gitlab::SnippetSearchResults do ...@@ -25,7 +27,7 @@ describe Gitlab::SnippetSearchResults do
where(:scope, :count_method, :expected) do where(:scope, :count_method, :expected) do
'snippet_titles' | :snippet_titles_count | '1234' 'snippet_titles' | :snippet_titles_count | '1234'
'snippet_blobs' | :snippet_blobs_count | '1234' 'snippet_blobs' | :snippet_blobs_count | '1234'
'projects' | :limited_projects_count | '1000+' 'projects' | :limited_projects_count | max_limited_count
'unknown' | nil | nil 'unknown' | nil | nil
end end
......
...@@ -19,4 +19,8 @@ module SearchHelpers ...@@ -19,4 +19,8 @@ module SearchHelpers
click_link scope click_link scope
end end
end end
def max_limited_count
Gitlab::SearchResults::COUNT_LIMIT_MESSAGE
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment