Merhaba
İlginiz için teşekkürler Mustafa bey. Zamanım olmadığı için yeni cevap yazabiliyorum.
SQLite ile bir türlü başarılı denemeler yapamadım. Firebird içersinde ki metinleri SQLite'a sağlıklı bir şekilde aktaramadım. Bu proje için de Firebird'den vazgeçemedim yani. :)
Karşılaştığım zorlukları, verilerin olduğu tabloları gruplayarak çözdüm. 20 milyonluk tablodan 10 kadar alt tablo oluşturdum. Arama hızı şu anda değişkenlik göstersede ortalama olarak iyi sayılır. Bazı müdahaleler daha yaparak hız konusunda bazı iyileştirmeler yapmayı düşünüyorum.
mussimsek yazdı:Merhaba,
Şu adreste hiç bir fts motoru kullanmadan firebird ile yapılan bir uygulama var. İlk aramada 30-40 sn sürse de, 2. aramadan sonra aramalar ms. sürelerine düşüyormuş.
http://www.ibphoenix.com/downloads/Fire ... Z303-R.zip
Hatta elemanlar iyice abartmış, yabancı dil gibi birçok şey eklemişler. Bunları da temizlersen daha da hızlanabilir.
Bu projeyi siz link'ini verdikten sonra inceleme fırsatı buldum. Kodlarda işime yarayacak şeyler bulamadım. Bunların sebepleri şunlar;
1. Metinler varchar alanda saklanıyor ve en fazla 32.000 karekter saklayabiliyorlar. Benim metinler ise 2 MB'ı bulabiliyor. Blob alanda olmaları gerekli.
2. Indexleme işini arama sırasında yapıyor. Kullanıcının girdiği her arama kelimesini önce index tablolarında arıyor index tablosunda yok ise aranan kelime metinler içersinde aranıyor. Kelime metinler içersinde bulunduğunda da önce index tablosunu yeniliyor sonra sonuçları ekrana getiriyor.
3. Matıksal arama yapmıyor.
Bu işlemleri Stored Procedure'ler kullanarak database tarafında yapmışlar.
Verdiğiniz diğer üç projeyi daha önceden incelemiştim. Bunlardan da işime yarayacak bir şeyler edinemedim.
Zaten kelime indexleme için kullanılan mantık her projede hemen hemen aynı. Sadece Rubicon'da biraz farklı yapmışlar. Bağ tablosu ile kelime tablosunu birleştirmişler. Rubicon'un bu yapısında 20 milyon ve daha fazla kayıt olduğunu düşünemiyorum. Her nekadar rubicon'un bu yapısını anlayamasam da 14gb'lık veriyi index'lediklerini ve çok hızlı bir şekilde kullandıklarını biliyorum (
http://www.tamaracka.com/). 14gb'lık veritabanını hangi konfigürasyonda ki makinada barındıklarını da merak etmiyo değilim.