torture → all records mentioning torture (Porter stemming catches tortured, tortures, torturing)
forced labour → records containing BOTH "forced" and "labour" (stemming: forced matches force/forcibly)
"forced labour" → records with the exact phrase
LGBT* → trailing-* = prefix match: catches LGBTQ, LGBTI, LGBT+ (Porter stemming won't help with acronyms — use * explicitly)
democra* → matches democracy, democracies, democratic, democratisation
torture OR abuse → union — records with either word
torture NOT detention → torture records that don't mention detention
(child OR woman) AND trafficking → grouped booleans
Note: operators are case-sensitive — and / or lowercased become plain words.
When to use * — for acronyms and uncommon variants that the Porter stemmer can't collapse (LGBT*, SDG*, UNHCR*, pre-1990*, non-discriminat*). For regular English verbs and nouns you usually don't need *: the default stemmer already catches the common inflections.
Quotes vs bare — NOT "green" matches only the word "green" (keeps records with greenhouse); NOT green (no quotes) excludes any word starting with "green".
Irregular plurals auto-expand — typing woman also matches women (and vice versa). Same for man/men, child/children, person/people, crisis/crises, criterion/criteria, and 5 more. A small chip appears under the input showing what's being expanded. Use "woman" (in quotes) if you want the exact word only.
⚠ NOT clauses are best-effort. SQLite FTS5's NOT operator can leak records that contain the negated term in some sentence positions. For research where exclusion must be airtight (e.g. citing in a brief), spot-check the result list manually before relying on the count.