{"title":"FTS5 Tam Metin Arama","slug":"fts5-search","category":"concepts","summary":"Synapse, milisaniyenin altında tam metin bellek araması için SQLite FTS5'i nasıl kullanır.","audience":["human","llm"],"tags":["concept","search","fts5","fulltext"],"difficulty":"advanced","updated":"2026-06-27","word_count":568,"read_minutes":3,"lang":"tr","translated":true,"requested_lang":"tr","content_markdown":"\n# FTS5 Tam Metin Arama\n\nSynapse, hızlı ve esnek bellek araması için FTS5 (Full-Text Search 5) kullanır. Bu sayfa, nasıl çalıştığını ve etkili nasıl kullanılacağını açıklar.\n\n## FTS5 Nedir?\n\nFTS5, bir SQLite uzantısıdır (uzantılar yoluyla PostgreSQL'de de mevcuttur) ve tam metin arama yetenekleri sağlar. Şunları yapar:\n\n- Hızlı anahtar kelime araması için metin içeriğini indeksler\n- Boolean operatörleri destekler (AND, OR, NOT)\n- Tırnak işaretleriyle deyim eşleştirme destekler\n- `*` ile ön ek eşleştirme destekler\n- Sonuçları alaka düzeyine göre sıralar\n\nSynapse, tüm bellek içeriğini indekslemek için FTS5 kullanır ve binlerce bellekte milisaniyenin altında arama sağlar.\n\n## Synapse FTS5'i Nasıl Kullanır\n\n`POST /memory` yaptığınızda:\n\n1. Bellek içeriği `memories` tablosunda saklanır\n2. İçerik aynı zamanda FTS5 sanal tablosuna eklenir\n3. FTS5 içeriği otomatik olarak tokenleştirir ve indeksler\n\n`GET /memory/search?q=...` yaptığınızda:\n\n1. Synapse sorguyu FTS5 sözdizimi kullanarak ayrıştırır\n2. FTS5 indeksine karşı bir `MATCH` yürütür\n3. `mind_id'ye` göre filtreler (kiracı izolasyonu)\n4. Sıralanmış sonuçları döndürür\n\n## Sorgu Sözdizimi\n\n### Basit anahtar kelime arama\n\n```\n?q=docker\n```\n\n\"docker\" içeren bellekleri döndürür.\n\n### Birden çok anahtar kelime (örtük AND)\n\n```\n?q=docker+swarm\n?q=docker%20swarm\n```\n\nHEM \"docker\" HEM de \"swarm\" içeren bellekleri döndürür.\n\n### Deyim eşleştirme\n\n```\n?q=\"docker+swarm\"\n?q=%22docker%20swarm%22\n```\n\nTam \"docker swarm\" deyimini içeren bellekleri döndürür.\n\n### Ön ek eşleştirme\n\n```\n?q=docker*\n```\n\n\"docker\" ile başlayan kelimeleri (örn. \"dockers\", \"dockerfile\", \"dockerize\") içeren bellekleri döndürür.\n\n### Boolean OR\n\n```\n?q=docker+OR+kubernetes\n```\n\n\"docker\" VEYA \"kubernetes\" içeren bellekleri döndürür.\n\n### Boolean NOT\n\n```\n?q=docker+-swarm\n?q=docker+NOT+swarm\n```\n\n\"docker\" içeren ama \"swarm\" içermeyen bellekleri döndürür.\n\n### Gruplama\n\n```\n?q=(docker+OR+kubernetes)+-test\n```\n\n\"docker\" veya \"kubernetes\" içeren ama \"test\" içermeyen bellekleri döndürür.\n\n## Pratik Örnekler\n\n### Bir proje hakkındaki bellekleri bul\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=synapse+deployment\"\n```\n\n### Tam deyimi bul\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=%22docker+swarm%22\"\n```\n\n### Test belleklerini hariç tut\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=production+-test\"\n```\n\n### Teknolojiye göre bul\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=(postgres+OR+sqlite)+-mysql\"\n```\n\n## Sıralama\n\nFTS5, sonuçları BM25 algoritmasını kullanarak alaka düzeyine göre sıralar. Faktörler:\n\n- Terim sıklığı (terim ne sıklıkta görünüyor)\n- Ters belge sıklığı (daha nadir terimler daha yüksek sıralanır)\n- Belge uzunluğu (terimi içeren daha kısa belgeler daha yüksek sıralanır)\n- Sütun ağırlığı (başlık > içerik)\n\nSonuçlar sıralama düzeninde döndürülür (en alakalı önce).\n\n## Performans\n\n| İşlem | Gecikme |\n|-----------|---------|\n| 100 bellek arama | < 5ms |\n| 1.000 bellek arama | < 10ms |\n| 10.000 bellek arama | < 25ms |\n| 100.000 bellek arama | < 100ms |\n\nFTS5, okuma ağırlıklı iş yükleri için yüksek oranda optimize edilmiştir.\n\n## Sınırlamalar\n\n### Kök ayırma (Stemming)\n\nFTS5 varsayılan olarak kök ayırma yapmaz. \"running\" ve \"run\" farklı terimlerdir.\n\n**Geçici çözüm:** Ön ek eşleştirme kullanın: `?q=run*`\n\n### Yazım hatası toleransı\n\nFTS5 bulanık eşleştirme desteklemez. Bir yazım hatası sonuç döndürmez.\n\n**Geçici çözüm:** Kavramsal eşleştirme için anlamsal arama (`/memory/semantic-search`) kullanın.\n\n### Durum kelimeleri (Stop words)\n\nYaygın kelimeler (the, a, an, is) indekslenir ama arama için yararlı olmayabilir. FTS5 bunu otomatik olarak ele alır.\n\n## FTS5 ve Anlamsal Arama\n\n| Yön | FTS5 | Anlamsal Arama |\n|--------|------|-----------------|\n| Hız | Milisaniyenin altında | 50-100ms |\n| Eşleştirme | Tam anahtar kelimeler | Kavramsal |\n| Yazım hatası toleransı | Yok | Bazı |\n| Kök ayırma | Yok | Örtük |\n| Gömme gerektirir | Hayır | Evet |\n| En uygun | Belirli terimler | Kavramlar |\n\nAnahtar kelimeleri bildiğinizde FTS5 kullanın. X'in farklı şekilde tanımlandığı \"X hakkındaki bellekler\" istediğinizde anlamsal arama kullanın.\n\n## En İyi Uygulamalar\n\n> [!TIP]\n> - **Belirli terimler kullanın** — \"docker swarm\", \"container orchestration\"dan iyidir\n> - **Deyimleri tırnak içine alın** — `\"docker swarm\"` deyim eşleşmesini sağlar\n> - **Varyasyonlar için ön ek kullanın** — `deploy*` \"deploy\", \"deployment\", \"deploying\" kelimelerini yakalar\n> - **Gürültüyü hariç tut** — `-test` test belleklerini filtreler\n> - **Etiketlerle birleştir** — `?q=docker&tag=production` sonuçları daraltır\n\n## Sonraki Adımlar\n\n- [Anlamsal Arama](/docs/concepts/semantic-search)\n- [Memory API](/docs/api/memory)\n- [Bellek En İyi Uygulamaları](/docs/guides/memory-best-practices)\n","content_html":"<h1>FTS5 Tam Metin Arama</h1>\n<p>Synapse, hızlı ve esnek bellek araması için FTS5 (Full-Text Search 5) kullanır. Bu sayfa, nasıl çalıştığını ve etkili nasıl kullanılacağını açıklar.</p>\n<h2>FTS5 Nedir?</h2>\n<p>FTS5, bir SQLite uzantısıdır (uzantılar yoluyla PostgreSQL&#39;de de mevcuttur) ve tam metin arama yetenekleri sağlar. Şunları yapar:</p>\n<ul>\n<li>Hızlı anahtar kelime araması için metin içeriğini indeksler</li>\n<li>Boolean operatörleri destekler (AND, OR, NOT)</li>\n<li>Tırnak işaretleriyle deyim eşleştirme destekler</li>\n<li><code>*</code> ile ön ek eşleştirme destekler</li>\n<li>Sonuçları alaka düzeyine göre sıralar</li>\n</ul>\n<p>Synapse, tüm bellek içeriğini indekslemek için FTS5 kullanır ve binlerce bellekte milisaniyenin altında arama sağlar.</p>\n<h2>Synapse FTS5&#39;i Nasıl Kullanır</h2>\n<p><code>POST /memory</code> yaptığınızda:</p>\n<ol>\n<li>Bellek içeriği <code>memories</code> tablosunda saklanır</li>\n<li>İçerik aynı zamanda FTS5 sanal tablosuna eklenir</li>\n<li>FTS5 içeriği otomatik olarak tokenleştirir ve indeksler</li>\n</ol>\n<p><code>GET /memory/search?q=...</code> yaptığınızda:</p>\n<ol>\n<li>Synapse sorguyu FTS5 sözdizimi kullanarak ayrıştırır</li>\n<li>FTS5 indeksine karşı bir <code>MATCH</code> yürütür</li>\n<li><code>mind_id&#39;ye</code> göre filtreler (kiracı izolasyonu)</li>\n<li>Sıralanmış sonuçları döndürür</li>\n</ol>\n<h2>Sorgu Sözdizimi</h2>\n<h3>Basit anahtar kelime arama</h3>\n<pre><code class=\"hljs language-plaintext\">?q=docker</code></pre><p>&quot;docker&quot; içeren bellekleri döndürür.</p>\n<h3>Birden çok anahtar kelime (örtük AND)</h3>\n<pre><code class=\"hljs language-plaintext\">?q=docker+swarm\n?q=docker%20swarm</code></pre><p>HEM &quot;docker&quot; HEM de &quot;swarm&quot; içeren bellekleri döndürür.</p>\n<h3>Deyim eşleştirme</h3>\n<pre><code class=\"hljs language-plaintext\">?q=&quot;docker+swarm&quot;\n?q=%22docker%20swarm%22</code></pre><p>Tam &quot;docker swarm&quot; deyimini içeren bellekleri döndürür.</p>\n<h3>Ön ek eşleştirme</h3>\n<pre><code class=\"hljs language-plaintext\">?q=docker*</code></pre><p>&quot;docker&quot; ile başlayan kelimeleri (örn. &quot;dockers&quot;, &quot;dockerfile&quot;, &quot;dockerize&quot;) içeren bellekleri döndürür.</p>\n<h3>Boolean OR</h3>\n<pre><code class=\"hljs language-plaintext\">?q=docker+OR+kubernetes</code></pre><p>&quot;docker&quot; VEYA &quot;kubernetes&quot; içeren bellekleri döndürür.</p>\n<h3>Boolean NOT</h3>\n<pre><code class=\"hljs language-plaintext\">?q=docker+-swarm\n?q=docker+NOT+swarm</code></pre><p>&quot;docker&quot; içeren ama &quot;swarm&quot; içermeyen bellekleri döndürür.</p>\n<h3>Gruplama</h3>\n<pre><code class=\"hljs language-plaintext\">?q=(docker+OR+kubernetes)+-test</code></pre><p>&quot;docker&quot; veya &quot;kubernetes&quot; içeren ama &quot;test&quot; içermeyen bellekleri döndürür.</p>\n<h2>Pratik Örnekler</h2>\n<h3>Bir proje hakkındaki bellekleri bul</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=synapse+deployment&quot;</span></code></pre><h3>Tam deyimi bul</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=%22docker+swarm%22&quot;</span></code></pre><h3>Test belleklerini hariç tut</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=production+-test&quot;</span></code></pre><h3>Teknolojiye göre bul</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=(postgres+OR+sqlite)+-mysql&quot;</span></code></pre><h2>Sıralama</h2>\n<p>FTS5, sonuçları BM25 algoritmasını kullanarak alaka düzeyine göre sıralar. Faktörler:</p>\n<ul>\n<li>Terim sıklığı (terim ne sıklıkta görünüyor)</li>\n<li>Ters belge sıklığı (daha nadir terimler daha yüksek sıralanır)</li>\n<li>Belge uzunluğu (terimi içeren daha kısa belgeler daha yüksek sıralanır)</li>\n<li>Sütun ağırlığı (başlık &gt; içerik)</li>\n</ul>\n<p>Sonuçlar sıralama düzeninde döndürülür (en alakalı önce).</p>\n<h2>Performans</h2>\n<table>\n<thead>\n<tr>\n<th>İşlem</th>\n<th>Gecikme</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>100 bellek arama</td>\n<td>&lt; 5ms</td>\n</tr>\n<tr>\n<td>1.000 bellek arama</td>\n<td>&lt; 10ms</td>\n</tr>\n<tr>\n<td>10.000 bellek arama</td>\n<td>&lt; 25ms</td>\n</tr>\n<tr>\n<td>100.000 bellek arama</td>\n<td>&lt; 100ms</td>\n</tr>\n</tbody></table>\n<p>FTS5, okuma ağırlıklı iş yükleri için yüksek oranda optimize edilmiştir.</p>\n<h2>Sınırlamalar</h2>\n<h3>Kök ayırma (Stemming)</h3>\n<p>FTS5 varsayılan olarak kök ayırma yapmaz. &quot;running&quot; ve &quot;run&quot; farklı terimlerdir.</p>\n<p><strong>Geçici çözüm:</strong> Ön ek eşleştirme kullanın: <code>?q=run*</code></p>\n<h3>Yazım hatası toleransı</h3>\n<p>FTS5 bulanık eşleştirme desteklemez. Bir yazım hatası sonuç döndürmez.</p>\n<p><strong>Geçici çözüm:</strong> Kavramsal eşleştirme için anlamsal arama (<code>/memory/semantic-search</code>) kullanın.</p>\n<h3>Durum kelimeleri (Stop words)</h3>\n<p>Yaygın kelimeler (the, a, an, is) indekslenir ama arama için yararlı olmayabilir. FTS5 bunu otomatik olarak ele alır.</p>\n<h2>FTS5 ve Anlamsal Arama</h2>\n<table>\n<thead>\n<tr>\n<th>Yön</th>\n<th>FTS5</th>\n<th>Anlamsal Arama</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Hız</td>\n<td>Milisaniyenin altında</td>\n<td>50-100ms</td>\n</tr>\n<tr>\n<td>Eşleştirme</td>\n<td>Tam anahtar kelimeler</td>\n<td>Kavramsal</td>\n</tr>\n<tr>\n<td>Yazım hatası toleransı</td>\n<td>Yok</td>\n<td>Bazı</td>\n</tr>\n<tr>\n<td>Kök ayırma</td>\n<td>Yok</td>\n<td>Örtük</td>\n</tr>\n<tr>\n<td>Gömme gerektirir</td>\n<td>Hayır</td>\n<td>Evet</td>\n</tr>\n<tr>\n<td>En uygun</td>\n<td>Belirli terimler</td>\n<td>Kavramlar</td>\n</tr>\n</tbody></table>\n<p>Anahtar kelimeleri bildiğinizde FTS5 kullanın. X&#39;in farklı şekilde tanımlandığı &quot;X hakkındaki bellekler&quot; istediğinizde anlamsal arama kullanın.</p>\n<h2>En İyi Uygulamalar</h2>\n<div class=\"callout callout-ok\"></div><h2>Sonraki Adımlar</h2>\n<ul>\n<li><a href=\"/docs/concepts/semantic-search\">Anlamsal Arama</a></li>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/guides/memory-best-practices\">Bellek En İyi Uygulamaları</a></li>\n</ul>\n","urls":{"html":"/docs/concepts/fts5-search","text":"/docs/concepts/fts5-search?format=text","json":"/docs/concepts/fts5-search?format=json","llm":"/docs/concepts/fts5-search?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}