Gitlab hero border pattern left svg Gitlab hero border pattern right svg

Category Direction - Global Search

   
Section Enablement
Content Last Reviewed 2021-01-24

Introduction and how you can help

Thank you for visiting this direction page on Global Search in GitLab. This page belongs to the Global Search group of the Enablement stage and is maintained by John McGuire (E-Mail).

This strategy evolves, and everyone can contribute:

Overview

Global Search is the core search feature for GitLab, as the one place to search for anything in the platform. “Global” refers to the ability to search at the project, group, or instance level, as well as across content types. Users can search issues, merge requests, commits, epics, code, projects, wikis, comments, and users.

There are two modes Global Search can operate in, depending on the instance configuration:

The most frequent content type searched is code, at over 40% of queries.

Vision - Where we are headed

A modern search user interface that will allow users to navigate through their search to filter down to what they are looking for. Offering comprehensive filter options will allow users to search with vague context, decide what applies to what they are looking for, and filter out everything else. Making these filters dynamic based on the information returned from the initial query will encourage users to explore the information in GitLab easier.

Advanced Search uses Elasticsearch to index and search GitLab. Elasticsearch is an open-source search engine that has a wide range of uses that go far beyond traditional keyword-based searching. Having this information available in a very quick index may make integrations with SAST and DAST more flexible. There are also opportunities to connect to code intelligence and enhance context used in code when searching.

Challenges to address

2021 Goals FY22 / One-year plan

Desired Results

Global Search should be used frequently by every user that uses GitLab. It should be created in a way that allows users to build their own process and become the core of an internal way to communicate and share contributions.

The Elasticsearch Integration should become the primary piece to the GitLab product and serve out every list page allowing for more interactive features and keyword search.

We should have a tight connection with the community and customers to provide shared details, and encourage contributions.

Measuring Success - Target PI's / Metrics

We look at unique users per month, GMAU. Our goal is to grow this 10% each month.

GitLab currently supports Advanced Search for Starter and above self-managed instances. This provides users with a faster and more complete search experience across GitLab. GitLab.com similarly offers Advanced Search for Premium and above.

We chronicled our journey of deploying Elasticsearch for GitLab.com through several blog posts.

Target Audience and Experience

Advanced Search is targeted at all personas who might use GitLab. However, the largest benefits come to users performing cross-project code search looking for inner sourcing opportunities or exploring the breadth of public projects across GitLab.com.

GitLab is growing and the path to delivering a world-class Git Repo search is evolving quickly. Enterprise Edition Self-Managed customers need to provide their own install of Elasticsearch to connect to GitLab. We will need to be very creative about how to advance Community Edition and GitLab.com Free. Contributions are welcome!

Maturity

Currently, GitLab's maturity for Search is viable. Here's why:

GitLab's current Advanced Search experience works for some self-managed instances and the experience of getting started has continued to improve. The UI lacks some basic search capabilities. Using the search generally requires the user to be very exact in what they are looking for. It offers little capability to explore what is in a repo. We have Added Several of these in the past few months and expect to close the gap this year.

What's Next & Why

We have added a live roadmap that will track the progress as we complete major epics. Global Search Roadmap

In Progress: UX Search Enhancements for Advanced Search Our old user interface was designed to provide a minimal amount of complexity as we focused on building and scaling the backend components. We have started adding more rich features that are available with Elasticsearch. I expect that once we have these features available we will do another search UX design that better utilizes these features with a more complete User Flow. Our customers have told us that having a single tab for all results with filtering to specific scopes would be a better approach to help find content types across the repo. We are also going to start using horizontal space better by adding filtering to the left-hand side of the search page. This will allow us to expand the results list as well as move more results above the fold.

Next: Advanced Search Ranking We have been using very little customizations to Ranking. Improving this will be key to the making finding information in GitLab less intensive. We are also going to make indexing more efficient an improve the performance of Elasticsearch.

What is Not Planned right now

Currently there is not a plan to scale beyond the needs of Paid Groups on GitLab.com. This means that while the ambition of the Search Group is to expand Advanced Search to all users of GitLab, we're not yet ready to move in that direction. We will continue to add features to Basic search as we can while evolving Advanced Search.

As GitLab continues to grow it will become important to keep growing with GitLab. One of these areas that Global search will have impact is in adding new content types. Currently, this includes adding Vulnerabilities, and Snippets.

We will also be Allow be planning to offer deeper integration across other list pages in Gitlab. Lucene based indexing allows for very fast return of structured lists there are several pages in GitLab that offer these list and it’s a continual improvement to improve the speed.

Increase the number of Self-Managed users, using Advanced Search. We are considering how to enable Advanced Search by default. We have already made Advanced Search part of SaaS for all paid users.

Competitive Landscape

Both GitHub and BitBucket provide a more comprehensive and complete search for users; particularly in their ability to deeply search code and surface those results to users. While GitLab's Advanced Search is available to self-managed users.

There is a great need to improve the ability to search across repos for all competitors. This is commonly asked about from our prospective customers and is included in the comparison matrix for GitLab as well as the ROI calculator.

Feature GitLab SourceGraph GitHub BitBucket JIRA
Keyword Search
Search with keywords not specifying a field
YES YES YES   No
Search Filters
Filters can reduce results to more specific results
YES YES YES   YES
NLP (Natural Language Processing)
Search uses Linguistic structure to improve matching
YES YES YES   No
Language Code Filters
Search detects Code Language and allows filtering to a specific Language
No YES YES    
Search Diffs
Search returns results from previous versions
No YES No    
Commit message
Search by text used for the Commit message
YES YES YES    
Saved searches
The search with parameters can be saved and favorited to show later
No YES No    
Custom filter groupings
Combine filters and save them as a filter grouping
No YES No    
Autocomplete
Keywords are recommended while you are typing
YES YES No    
Rank statistics
Results show a score variable between the results
No YES No    
Multiple Branches
Code search can show more than the main branch
No YES No    
Compare results
Result page allows you to compare a result to other results from other searches
No No No    
Comments
Results are shown from comments
YES No YES    
All Results
Results are shown across all scopes or types in one integrated result page
No YES No    
Keyboard Shortcuts
Search is quickly accessible for key commands
YES YES No    
ID Quick Search
Search Recognizes IDs and takes you directly to the item page
YES No No    
Search by SHA
Commit SHAs are recognized and you are directed to the sha instead of the results
YES No No    
File Search
Files and directories are identified and searchable not just the reference of a file listed in code
YES No YES    
SaaS
Featurefull search is offered as part of the SaaS offering.
YES No YES    
APIs
Users can query search using APIs directly
YES No YES    
Issues
Issues are searchable
YES No YES    
Merge Request
Merge requests are searchable (not just the code
YES No YES    
Wiki
Wikis are searchable
YES No Yes    
Epics
Epics are searchable
YES No No    
Security Vulnerability
Search results for vulnerabilites
No No No    
Snipets
Snipets are searchable
No No No    
Batch Changes
Start batch changes from a result list
No YES No    
Search Across Groups
Search across groups, Global Search
YES YES YES    
COST
Per seat license (avg)
Included $6 Included    

Top user issue(s)

Top internal customer issue(s)

Top Strategy Item(s)

Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license