Performans nedenleriyle, ne olasılıkla yapmak isteyeceğiniz bir periyodik süreç bir dizin oluşturmak olması. Orada bunu yapmak çok karmaşık yolu vardır, ancak çok basit bir şekilde oldukça makul yararlı bir şey yapmak da mümkündür.
Kalbi, bir "indeks" Bir ders kitabının sonunda bulmak, ancak bir bilgisayar dünyasına bu fikri çevirmek istediğiniz şey çok aynı tür. Siz açıklamaları sizin tabloları taramak istiyorum, ve bir anahtar / değer "sözlük" inşa edeceğiz, "karma", ya da ne olursa olsun dilinizin equivelent yapısı denir. Tuşları size açıklama bulmak kelime olacaktır. Değerleri, o kelime bulunamadı hangi URL'ler bir dizi (veya liste ya da diliniz ne olursa olsun diyor) olacak.
Bir sorgu işlemek zaman, sorguda kelimeleri parçalayın, ve sözlükteki her biri bakmak. Sonra her "url" url içeren her kelime için bir puan alabilirsiniz. Daha sonra her url kaç puan dayanarak sonuçlarınızı rütbe. Alternatif olarak, size kelime bakarak bulmak tüm çeşitli url diziler arasında bir kümesi kesişim gerçekleştirerek tüm kelimeleri içeren sonuçları dönebilirsiniz.
size ulaşmak için çalışıyoruz ne bağlı olarak, size böyle tuşları gibi kelimelerin fonetik temsillerini kullanarak yerine ham kelimelerin kendileri gibi endeksi, inşa konusunda daha sofistike alabilirsiniz. Bir arama yaptığınızda, kendi fonetik gösterimleri içine arama terimleri kırmak ve bu şekilde ortak imla hataları yapmak sorunları ortadan kaldırabilirsiniz.
Alternatif olarak her kelime için yinelenen anahtarlar yaparak doğrudan ortak imla hataları ele alabilir.
Alternatif olarak, endeks yazmak üçüz ziyade tüm sözcükleri, farklı zamanları ve çekimleri ile sözcüklerin alternatif formları yakalamak için olabilir.
vs vs
Muhtemelen her sorguda bu indeks inşa değil isteyeceksiniz (nokta ne, aksi halde?), Diske kaydetmek ve bir sorgu sırasında belleğe (veya bir kısmını) yüklemek mümkün isteyeceksiniz bu yüzden. Bunu yapmak için bir veritabanı, ya da ne olursa olsun kullanımı olsun, ben size bırakıyorum.