branch/work

Search

Four kinds of result, a handful of filters, and no syntax you have to memorize.

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.

Something unclear or wrong here? Tell us - that is a bug in the docs, and we treat it like one.