Search syntax
There are two search pages. Simple search has a single box that matches card names and rules text together, and it is the one that understands the f: t: s: d: prefixes below. Advanced search splits names and text into separate fields with pickers for the rest — its two text fields are plain literal matches and do not read prefixes at all.
Title and text
Both fields are plain, case-insensitive substring matches against one column. Advanced search's Card Name looks only at the title; Card Text looks only at the rules text.
- Card Name
virusmatches 3 cards; Card Textvirusmatches 78. - Filling both means a card must match both: Card Name
virusplus Card Texttrashmatches 2. - Simple search's single box is the opposite — it matches title or text, so it is the wider net of the two.
Known limit: there are no quoted phrases. Whatever you type is taken as one literal substring, spaces included.
Fuzzy matching (opt-in)
Advanced search matches literally by default. The Matching checkbox adds trigram similarity on top, so near-misses and typos are found too.
Worked example: Card Name efficency (misspelt) finds nothing on its own. Tick the box and it finds 3 cards — Bioroid Efficiency Research, Efficiency Committee and Peak Efficiency.
With fuzzy on, loosely-related cards can appear; they rank below solid matches rather than being excluded. Simple search always matches this forgiving way, which is why it can return more results than advanced search for the same word. That difference is deliberate: casual search is forgiving, precise search is literal.
Prefixes
These work in simple search only — the box on the home page, the one on /cards, and the Simple search field at the top of advanced search. A recognised prefix is removed from the text and applied as a filter instead.
They do notapply to advanced search's Card Name and Card Text fields. Those are pure literal substring matches with no prefix parsing, so typing f:anarchinto Card Name looks for cards whose title contains the characters “f:anarch” and finds none. Use that page's Faction, Type, Subtype and Side controls instead — they do the same job without needing the code.
| Prefix | Filters | Example | Matches |
|---|---|---|---|
f: | Faction | f:anarch | 253 cards |
t: | Type | t:operation | 218 cards |
s: | Subtype | s:virus | 41 cards |
d: | Side | d:runner | 928 cards |
Combine them and everything is ANDed: f:anarch s:virus matches 27 cards. Anything left over after the prefixes are removed is searched as ordinary text.
- The value is the underlying code, not the display name — lowercase, with an underscore where the name has a space or hyphen. Haas-Bioroid is
f:haas_bioroid(249 cards); Corp Identity ist:corp_identity; Code Gate iss:code_gate. - No spaces, and quoting doesn't help. Text is split into words before prefixes are recognised, so a prefix and its value have to be one word with no space in between.
f:haas bioroidis read as two separate words —f:haas(an unrecognised faction code, so it matches nothing) andbioroid(searched as ordinary text) — and finds nothing, not Haas-Bioroid cards.f:"haas bioroid"is parsed exactly the same way; quote marks are just characters here, not syntax. Use the underscored code instead. - Exact and case-sensitive. Unlike Card Name and Card Text, a prefix value has to be the whole code:
f:anarmatches nothing (no partial match), andf:ANARCHmatches nothing (codes are always lowercase). Only the prefix letter itself ignores case —F:anarchandf:anarchare the same. - You don't have to know the code.Simple search's box completes these values as you type: type
f:and it lists every faction with its code; keep typing to narrow the list, then pick one with the arrow keys and Enter, with Tab, or by clicking. That is the whole reason the strictness above is liveable. With JavaScript off the box is still an ordinary text field and the syntax still works — you just have to type the code yourself.
Precedence
- A filter already set in the URL beats a prefix for the same field. Follow a faction link into simple search — say
/cards?faction=nbn, which shows a “filtered by” note — then typef:anarchin the box, and you still get the 241 NBN cards. Thef:token is consumed either way: it was recognised as a prefix, not left behind as literal words to search for. Use Clear filter to drop the inbound filter. - An unrecognised prefix is left alone and searched as literal text —
x:foolooks for cards containing the characters “x:foo” (there are none). - Repeating a prefix for the same field keeps only the first.
f:anarch f:criminalfilters to Anarch; the second token is still removed from the text, not searched as the literal words “f:criminal”. This is different from advanced search's Faction picker, where choosing several values is a real either of these — to search two factions at once, use the picker.
Not supported
None of the following do anything special. They are searched as ordinary characters, so they will usually find nothing.
- Negation —
-f:anarch - OR between terms —
anarch | criminal - Quoted phrases —
"sure gamble" - Regular expressions —
/^Sure/ - Any other prefix, including NetrunnerDB's —
x:2, a:flavour, e:core
Only the four prefixes in the table above exist. There is deliberately no larger query grammar here.