# FTS5 fulltextssökning SUMMARY: Hur Synapse använder SQLite FTS5 för fulltextssökning av minnen under en millisekund. FTS5 fulltextssökning Synapse använder FTS5 (Full-Text Search 5) för snabb, flexibel minnessökning. Den här sidan förklarar hur det fungerar och hur man använder det effektivt. Vad är FTS5? FTS5 är ett SQLite-tillägg (även tillgängligt i PostgreSQL via tillägg) som tillhandahåller fulltextssökningsfunktionalitet. Det: - Indexerar textinnehåll för snabb nyckelordssökning - Stöder booleska operatorer (AND, OR, NOT) - Stöder frasmatchning med citattecken - Stöder prefixmatchning med - Rankar resultat efter relevans Synapse använder FTS5 för att indexera allt minnesinnehåll, vilket möjliggör sökning under en millisekund över tusentals minnen. Hur Synapse använder FTS5 När ni gör : 1. Minnesinnehåll lagras i -tabellen 2. Innehåll infogas också i FTS5 virtuell tabell 3. FTS5 tokeniserar och indexerar innehållet automatiskt När ni gör : 1. Synapse tolkar frågan med FTS5-syntax 2. Kör en mot FTS5-indexet 3. Filtrerar efter (klientisolation) 4. Returnerar rankade resultat Frågesyntax Enkel nyckelordssökning [CODE BLOCK] Returnerar minnen som innehåller "docker". Flera nyckelord (implicit AND) [CODE BLOCK] Returnerar minnen som innehåller BÅDE "docker" OCH "swarm". Frasmatchning [CODE BLOCK] Returnerar minnen som innehåller den exakta frasen "docker swarm". Prefixmatchning [CODE BLOCK] Returnerar minnen som innehåller ord som börjar med "docker" (t.ex. "dockers", "dockerfile", "dockerize"). Boolesk OR [CODE BLOCK] Returnerar minnen som innehåller "docker" ELLER "kubernetes". Boolesk NOT [CODE BLOCK] Returnerar minnen som innehåller "docker" men INTE "swarm". Gruppering [CODE BLOCK] Returnerar minnen som innehåller "docker" eller "kubernetes", men inte "test". Praktiska exempel Hitta minnen om ett projekt [CODE BLOCK] Hitta exakt fras [CODE BLOCK] Uteslut testminnen [CODE BLOCK] Hitta efter teknik [CODE BLOCK] Rankning FTS5 rankar resultat efter relevans med BM25-algoritmen. Faktorer: - Termfrekvens (hur ofta termen förekommer) - Inverse document frequency (sällsynta termer rankas högre) - Dokumentlängd (kortare dokument med termen rankas högre) - Kolumnvikt (title > content) Resultat returneras i rankningsordning (mest relevant först). Prestanda | Åtgärd | Latens | |-----------|---------| | Sök 100 minnen | < 5 ms | | Sök 1 000 minnen | < 10 ms | | Sök 10 000 minnen | < 25 ms | | Sök 100 000 minnen | < 100 ms | FTS5 är högt optimerat för läsintensiva arbetsbelastningar. Begränsningar Stamning FTS5 gör inte stamning som standard. "running" och "run" är olika termer. Lösning: Använd prefixmatchning: Tolerans mot felstavning FTS5 stöder inte oskarp matchning. En felstavning returnerar inga resultat. Lösning: Använd semantisk sökning () för begreppsmatchning. Stopword Vanliga ord (the, a, an, is) indexeras men kanske inte är användbara för sökning. FTS5 hanterar detta automatiskt. FTS5 vs semantisk sökning | Aspekt | FTS5 | Semantisk sökning | |--------|------|-----------------| | Hastighet | Under en millisekund | 50–100 ms | | Matchning | Exakta nyckelord | Begreppslig | | Tolerans mot felstavning | Ingen | Någon | | Stamning | Ingen | Implicit | | Kräver inbäddningar | Nej | Ja | | Bäst för | Specifika termer | Begrepp | Använd FTS5 när ni känner till nyckelorden. Använd semantisk sökning när ni vill ha "minnen om X" där X beskrivs på ett annat sätt. Bästa praxis > [!TIP] > - Använd specifika termer — "docker swarm" slår "container orchestration" > - Citera fraser — säkerställer frasmatchning > - Använd prefix för variationer — fångar "deploy", "deployment", "deploying" > - Uteslut brus — filtrerar bort testminnen > - Kombinera med taggar — snävar in resultatet Nästa steg - Semantisk sökning - Memory API - Minnesbästa praxis