22 Jan

Metin Bazlı Arama – Site İçi Arama Motoru

Aslında burda anlatmaya çalışacağım şey, bir site içi arama motorunun nasıl oluşturulcağından öte, bu iş için kullanılabilecek, metin bazlı bir arama motorunu (Sphinx) anlatmak.

Basit anlamda bir site içi arama motoru, site içerisine eklenmiş bütün metinleri arayabilecek bir SQL sorgusu ile yapılır. Bunun için basit SQL ler veya daha iyi sonuç alabilmek için kompleks SQL lerde kullanılabilir.

Ama ne yazık ki, başarılı bir metin bazlı arama için bunlar yetmiyor. Arama yapacak tablo veya tabloların boyutu arttıkça sorgularımızın yavaş çalışması kaçınılmaz olacak. İşte burda devreye metin bazlı arama motorları devreye giriyor.

Bu arama motorları, kullanılan veritabanlarından bağımsız olarak çalışarak, istenilen tablo veya tablolardan metinlerin alınıp indekslenmesi ile, daha hızlı ve daha başarılı arama sonuçları alınmasını sağlıyor.

Açık kaynak kodlu ve ücretsiz bazı arama motorları şunlar :

DataparkSearch
Ferret
Ht-//Dig
Hyper Estraier
Lemur/Indri
Lucene
mnoGoSearch
Sphinx
Swish-e
Xapian

Bunlardan sadece Sphinx ve Lucene’i inceleme fırsatı bulabildim. Lucene in dağıtık sistemler için uygun olmaması ve (benim için) anlaşılması zor bir yapısı olması sebebi ile Sphinx ile çalışmalarıma devam ettim. Sphinx iyi bir dökümantasyona sahip, kolayca kurup ayarlama yapabiliyorsunuz.

Normalde öncelikle kurulumundan başlayarak anlatmam gerekirdi, ama bu sefer tersinden anlatmaya çalışacağım :

– Aramanın yapılması
– İstemcinin kurulması
– Sunucunun kurulması ve yapılandırılması

şeklinde anlatmaya çalışacağım.

Sphinxin PHP için hazırlanmış bir eklentisi mevcut, eklenti kurmak istemiyorsanız, Sphinx işlemlerini yapabilmek için hazırlanmış hazır bir sınıf da mevcut. Ben eklentiyi kullanmayı tercih ediyorum, ama eklentinin kurulmasının mümkün olmadığı zamanlarda bu sınıf iyi bir çözüm olabilir.

Burda eklentiyi baz alarak anlatacağım, bu yüzden burda yazdığım kodlar ile API classını kullanırken hata alırsanız, bunun API classından kaynaklanabileceğini unutmayın. Böyle bir ihtimal düşük olmakla birlikte belirtmekte fayda var.

Bu seriye ait diğer yazılar :
Metin Bazlı Arama ? Site İçi Arama Motoru
Aramanın Yapılması ? Site İçi Arama Motoru
Sphinx nedir ?
Sphinx Kurulumu
Sphinx’in Ayarlanması ve Kullanımı