8.3 KiB
Příklady dotazů — MCP soubory
10 příkladů od nejjednoduššího po nejsložitější. Každý je nejdřív stručně, pak rozepsaný.
Volání je přes search(...). V Claude chatu se ptáš normálně česky ("najdi mi…") a Claude pod kapotou volá mcp__soubory__search(...). Tady ukazuju přímé volání tak, abys viděl co se kombinuje.
Přehled (od nejlehčího po nejtěžší)
| # | Příklad |
|---|---|
| 1 | search("randomization") |
| 2 | search("adverse event") |
| 3 | search('"protocol deviation"') |
| 4 | search("randomization", ext=["xlsx","xlsm"]) |
| 5 | search("SAE", study="UCO3001", ext=["eml","msg"]) |
| 6 | search('"kit number"', folder="CRF", since="2025-06-01") |
| 7 | search("adverse OR serious -mild") |
| 8 | search('"serious adverse event" -draft -obsolete', ext=["docx","pdf"]) |
| 9 | search('icotrokinra placebo', study="UCO3001", folder="Training", limit=30) |
| 10 | search('"lot expiration" OR "expirační" OR "expiry"', ext=["eml","msg","pdf"], since="2025-01-01") |
1. Nejjednodušší — jedno slovo
search("randomization")
Co to dělá: Najde všechny dokumenty z obou studií, které kdekoli v textu obsahují slovo "randomization". Bez filtru typu souboru, studie, ani data. Vrátí 15 nejlépe rankovaných.
Kdy použít: Když máš jen obecné slovo a nevíš kde to může být. Dobré pro první nástřel — uvidíš, ve kterých typech souborů a v kterých složkách se to vyskytuje.
Trik: Slovník indexu používá unaccent, takže príloha najde i priloha (diakritika neřeší).
2. Dvě slova — implicitní AND
search("adverse event")
Co to dělá: Najde dokumenty, kde se vyskytují obě slova "adverse" a "event" — ale kdekoli v dokumentu, nemusí být vedle sebe. Mohou být klidně na různých stranách.
Kdy použít: Když chceš zúžit širší slovo (adverse samotné by našlo i adversely). Dvě slova = silnější rank.
Rozdíl proti #3: "adverse" může být na straně 5 a "event" na straně 150 — pořád match.
3. Přesná fráze
search('"protocol deviation"')
Co to dělá: Najde dokumenty, kde jsou tato dvě slova přímo vedle sebe v tomto pořadí. "protocol of deviation" už nematchne, "deviation from protocol" taky ne.
Kdy použít: Pro odborné termíny, názvy formulářů, ustálené fráze. Mnohem ostřejší než AND.
Pozor: Uvozovky musí být přesně "..." (PowerShell může vyžadovat escape: '"protocol deviation"').
4. Filtr typu souboru
search("randomization", ext=["xlsx", "xlsm"])
Co to dělá: Stejné jako #1, ale jen v Excelech (.xlsx + .xlsm). Užitečné když víš, že to bude v tabulce — typicky randomizační listy, IWRS exporty.
Kdy použít: Když chceš najít data, ne dokumentaci. Excel = data tabulky, PDF/DOCX = popis.
Tip: Metadata v odpovědi obsahují sheet_names — uvidíš ve kterých listech to může být. Pak otevřeš ten Excel rovnou na správném listu.
5. Studie + typ — kombinovaný filtr
search("SAE", study="UCO3001", ext=["eml", "msg"])
Co to dělá: Najde emaily (EML i MSG) z UCO3001 studie, které obsahují slovo "SAE" (Serious Adverse Event). Metadata vrátí from, to, subject, date, počet příloh.
Kdy použít: "Kdo mi psal o SAE případu" — typický audit dotaz.
Trik: Kombinace study + ext je výkonná — Postgres má index (study, ext) přímo na to.
6. Tři filtry — fráze + složka + datum
search('"kit number"', folder="CRF", since="2025-06-01")
Co to dělá: Najde dokumenty obsahující frázi "kit number", ale jen ty uložené v jakékoli složce s "CRF" v názvu, a modifikované od 1. června 2025 dál.
Kdy použít: Když si pamatuješ kontext ("bylo to v CRF dokumentaci po SIVu") ale ne celý text.
Jak to funguje pod kapotou:
- Postgres najde fulltextové matche
- Mongo dotáhne
parent_foldersamtime - Filtruje se v Pythonu — proto se to dělá jako AND nad všemi třemi
7. OR + NOT — logické operátory
search("adverse OR serious -mild")
Co to dělá: Najde dokumenty, kde je buď "adverse" nebo "serious", ale nesmí obsahovat slovo "mild".
Kdy použít: Když máš více synonym a chceš jeden dotaz místo tří. -mild vyloučí typicky tréninkové materiály ("mild AE example") nebo nezávažné případy.
Důležité — priorita operátorů:
A OR B Cse vyhodnotí jakoA OR (B AND C)websearch_to_tsquerynemá závorky — nemůžeš to přeskupit- Když potřebuješ jiné pořadí, rozděl na dva dotazy
8. Fráze + dvě vyloučení + ext filtr
search('"serious adverse event" -draft -obsolete', ext=["docx", "pdf"])
Co to dělá: Přesná fráze "serious adverse event", ale bez dokumentů obsahujících slova "draft" nebo "obsolete", a jen v Wordech a PDFkách.
Kdy použít: Když chceš jen finální verze dokumentů. V Dropboxu typicky najdeš 5 verzí toho samého (draft, v0.9, v1.0, v1.0_FINAL, OBSOLETE) — tohle odřízne šum.
Kombinace technik: fráze + vícenásobné NOT + typ. Reálné dotazy v práci vypadají takhle.
9. Dvě AND slova + 2 filtry + víc výsledků
search("icotrokinra placebo", study="UCO3001", folder="Training", limit=30)
Co to dělá: Najde tréninkové materiály z UCO3001, kde se mluví jak o léku icotrokinra, tak o placebu (typicky srovnání ramen studie). limit=30 místo defaultních 15.
Kdy použít:
- Onboarding nového člena týmu — "dej mi všechny prezentace co srovnávají větve studie"
- Příprava na monitorovací návštěvu
- Hledání edukačního obsahu pro pacienty
Proč 30: Tréninkových materiálů bývá hodně verzí (každý SIV nové), default 15 by jich pravděpodobně neukázal všechny.
10. Nejtěžší — vícejazyčné OR + tři typy + datum
search(
'"lot expiration" OR "expirační" OR "expiry"',
ext=["eml", "msg", "pdf"],
since="2025-01-01"
)
Co to dělá: Najde dokumentaci a komunikaci o expiraci léků z roku 2025. Hledá ve třech jazykových variantách (EN fráze "lot expiration", CZ "expirační", krátké "expiry") napříč emaily, MSG soubory a PDFkami.
Kdy použít: Typický compliance dotaz — "ukaž mi všechno co tento rok řešilo expiraci kitů". Kombinuje:
- vícejazyčnost (sponsor píše anglicky, ty notifikuješ česky)
- více kanálů (emaily i oficiální PDF dokumenty)
- časové okno (relevantní jen letošek)
Pod kapotou:
- PG fulltext spojí 3 OR větve do jednoho tsquery
- Filtr
extIN ('eml','msg','pdf') na PG úrovni - Filtr
sincena sloupecmtime(indexovaný) - Mongo metadata: u emailů
from/to/subject, u PDFpages/author - Výsledky setřízené podle
ts_rank(nejvíc relevantní nahoře)
Tohle je ten případ kdy nakombinuješ úplně všechno a Claude ti pak v chatu napíše: "Našel jsem 8 dokumentů. 3 emaily od monitorky z března, 1 PDF notifikace IWRS z června, ...". Přesně proto jsme to stavěli.
Shrnutí — pravidla palce
- Začni jednoduše (1 slovo) → uvidíš co je v korpusu → zužuj
- Fráze (
"...") je vždy ostřejší než AND -slovoje tvůj nejlepší kamarád proti šumu (draft, obsolete, training)ext=[...]dramaticky zrychlí dotaz a vyfiltruje formátový šumfolder=...funguje skvěle pokud máš konzistentní strukturu složek (#190 eCRF, #200 Training, …)since=...používej kdykoli tě zajímá "co je nového"- Diakritika neřeší —
expiracenajde iexpirační(oboje má rootexpira) - Není wildcard —
randomiz*nefunguje, alerandomizationarandomizedjsou různá slova → dej je do OR
Co když fulltext nestačí?
Jiné nástroje MCP:
by_author("Hazzard")— kdo psal/upravoval (DOCX/PPTX metadata)recent_files(days=7)— co se změnilo bez ohledu na obsahfind_duplicates()— kolikrát mám stejný souborbrowse_folder("CRF")— výpis složky bez fulltexturead_document(path=..., around_match="randomization")— skok přímo na slovo v dlouhém dokumentu