# FTS5 Tam Metin Arama SUMMARY: Synapse, milisaniyenin altında tam metin bellek araması için SQLite FTS5'i nasıl kullanır. FTS5 Tam Metin Arama 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. FTS5 Nedir? FTS5, bir SQLite uzantısıdır (uzantılar yoluyla PostgreSQL'de de mevcuttur) ve tam metin arama yetenekleri sağlar. Şunları yapar: - Hızlı anahtar kelime araması için metin içeriğini indeksler - Boolean operatörleri destekler (AND, OR, NOT) - Tırnak işaretleriyle deyim eşleştirme destekler - ile ön ek eşleştirme destekler - Sonuçları alaka düzeyine göre sıralar Synapse, tüm bellek içeriğini indekslemek için FTS5 kullanır ve binlerce bellekte milisaniyenin altında arama sağlar. Synapse FTS5'i Nasıl Kullanır yaptığınızda: 1. Bellek içeriği tablosunda saklanır 2. İçerik aynı zamanda FTS5 sanal tablosuna eklenir 3. FTS5 içeriği otomatik olarak tokenleştirir ve indeksler yaptığınızda: 1. Synapse sorguyu FTS5 sözdizimi kullanarak ayrıştırır 2. FTS5 indeksine karşı bir yürütür 3. göre filtreler (kiracı izolasyonu) 4. Sıralanmış sonuçları döndürür Sorgu Sözdizimi Basit anahtar kelime arama [CODE BLOCK] "docker" içeren bellekleri döndürür. Birden çok anahtar kelime (örtük AND) [CODE BLOCK] HEM "docker" HEM de "swarm" içeren bellekleri döndürür. Deyim eşleştirme [CODE BLOCK] Tam "docker swarm" deyimini içeren bellekleri döndürür. Ön ek eşleştirme [CODE BLOCK] "docker" ile başlayan kelimeleri (örn. "dockers", "dockerfile", "dockerize") içeren bellekleri döndürür. Boolean OR [CODE BLOCK] "docker" VEYA "kubernetes" içeren bellekleri döndürür. Boolean NOT [CODE BLOCK] "docker" içeren ama "swarm" içermeyen bellekleri döndürür. Gruplama [CODE BLOCK] "docker" veya "kubernetes" içeren ama "test" içermeyen bellekleri döndürür. Pratik Örnekler Bir proje hakkındaki bellekleri bul [CODE BLOCK] Tam deyimi bul [CODE BLOCK] Test belleklerini hariç tut [CODE BLOCK] Teknolojiye göre bul [CODE BLOCK] Sıralama FTS5, sonuçları BM25 algoritmasını kullanarak alaka düzeyine göre sıralar. Faktörler: - Terim sıklığı (terim ne sıklıkta görünüyor) - Ters belge sıklığı (daha nadir terimler daha yüksek sıralanır) - Belge uzunluğu (terimi içeren daha kısa belgeler daha yüksek sıralanır) - Sütun ağırlığı (başlık > içerik) Sonuçlar sıralama düzeninde döndürülür (en alakalı önce). Performans | İşlem | Gecikme | |-----------|---------| | 100 bellek arama | < 5ms | | 1.000 bellek arama | < 10ms | | 10.000 bellek arama | < 25ms | | 100.000 bellek arama | < 100ms | FTS5, okuma ağırlıklı iş yükleri için yüksek oranda optimize edilmiştir. Sınırlamalar Kök ayırma (Stemming) FTS5 varsayılan olarak kök ayırma yapmaz. "running" ve "run" farklı terimlerdir. Geçici çözüm: Ön ek eşleştirme kullanın: Yazım hatası toleransı FTS5 bulanık eşleştirme desteklemez. Bir yazım hatası sonuç döndürmez. Geçici çözüm: Kavramsal eşleştirme için anlamsal arama () kullanın. Durum kelimeleri (Stop words) Yaygın kelimeler (the, a, an, is) indekslenir ama arama için yararlı olmayabilir. FTS5 bunu otomatik olarak ele alır. FTS5 ve Anlamsal Arama | Yön | FTS5 | Anlamsal Arama | |--------|------|-----------------| | Hız | Milisaniyenin altında | 50-100ms | | Eşleştirme | Tam anahtar kelimeler | Kavramsal | | Yazım hatası toleransı | Yok | Bazı | | Kök ayırma | Yok | Örtük | | Gömme gerektirir | Hayır | Evet | | En uygun | Belirli terimler | Kavramlar | Anahtar kelimeleri bildiğinizde FTS5 kullanın. X'in farklı şekilde tanımlandığı "X hakkındaki bellekler" istediğinizde anlamsal arama kullanın. En İyi Uygulamalar > [!TIP] > - Belirli terimler kullanın — "docker swarm", "container orchestration"dan iyidir > - Deyimleri tırnak içine alın — deyim eşleşmesini sağlar > - Varyasyonlar için ön ek kullanın — "deploy", "deployment", "deploying" kelimelerini yakalar > - Gürültüyü hariç tut — test belleklerini filtreler > - Etiketlerle birleştir — sonuçları daraltır Sonraki Adımlar - Anlamsal Arama - Memory API - Bellek En İyi Uygulamaları