The basics
Type into the box in the header. Results are grouped into four tabs: Changes, Code, Stacks and People. Plain words work as you would expect, and quoted phrases stay together.
tokenizer "index scan" parser tokenizer
Filters
Four filters, written as field:value. They combine with each other and with free text.
- author:handle - changes written by that person.
- state:open - also draft, merged, abandoned.
- stack:name - matches the stack name or its repository.
- path:parser.js - file paths containing that text. Works in the Code tab.
author:nadia state:open state:merged stack:search path:tokenizer.py author:nadia tokenizer
Anything else is just text
This is the important part. If you type something that looks like a filter but is not one, it is searched as text rather than throwing an error at you. Pasting a URL into the box searches for the URL. Typing todo: searches for todo:.
Search syntax that punishes you for typing the wrong thing is a bad trade. The worst outcome here is results you did not want.
What each tab searches
- Changes - titles and summaries, ranked with titles weighted higher.
- Code - file paths and file contents at the head revision of each change. Older revisions are history and would bury the current state of the code. Matches are highlighted in the excerpt.
- Stacks - names, repository names and descriptions. Featured stacks come first.
- People - handles, display names and bios.
How matching works
Change, stack and people search use English word matching, so "tokenizing" finds "tokenize". Code search does not: identifiers are not English words, and parseQuery should not be stemmed into something else.
