09 Feb

Sphinx nedir ?

MySQL 5.0 sürümünden itibaren güzel bir özellik sundu : fulltext search. Bu özellik sayesinde, veritabanındaki bir tablonun,istenilen alanları (fulltext indeksi eklenmiş alanlar) üzerinde metin bazlı arama yapabiliyoruz.

Fulltext search sadece MyISAM tipindeki tablolar üzerinde çalışabilmekte. Ayrıca çok da performanslı olduğu söylenemez.

Performans haricinde arama sırasında da çok da esnek olmayan bir yapısı var.

İşte burada Search Engine Server ( Arama motoru sunucusu) devreye giriyor.

Bu arama motrolarının yaptığı şey, veritabanından bağımsız çalışarak, verilerin, veritabanından belirli aralıklarda çekilerek indekslenmesi. Sonrasında da kendine gelen arama sorguları esnasında, indekslenmiş kayıtlar içerisinden sonucu kısa sürede vermek.

MySQL Fulltext Search de süreç şu şekilde olur:

Fulltext indeksi eklenmiş tablodaki alan üzerinde sorgu çalıştırılır :
SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST (‘database’);
Çıkan sonuçlar direkt olarak kullanılır.

Arama motoru sunucusundaki süreç de şöyle işler :

– Arama motoruna bağlatı yapılır
– Aranan kelime iletilir
– Aranan kelimenin bulunduğu kayıtların ID lerinin bulunduğu sonuçlar geri döndrülür
– Arama motoru sonuçları (eğer sonuç döndüyse) ayıklanarak veritabanından ilgili kayıtlar ID lerine göre çekilir.

Arama motoru ile ilgili işlem adımları daha çok görünse de,mysql fulltext search den daha hızlı sonuç alabilmekteyiz.

Burda bilinmesi gereken bir şey daha var, arama motoru sunucsu belirli aralıklarla veritabanına bağlanarak verileri yeniden indekslemek zorundadır. Yani üzerinde arama yapılan tabloya yeni veriler girilmiş veya mevcut veriler değişitirilmiş ya da silinmiş olabilir. İşte bu yüzden bir cron job ile , arama motorunun yeniden indeksleme yapması sağlanmalıdır. Bu indeksleme ve yeniden indeksleme ile ilgili konuya bir sonraki yazıda değinmeye çalışacağım.

Konumuzun başlığını oluşturan “Sphinx nedir” in cevabı: Yukarıda değinildiği gibi, veritabanından bağımsız olarak çalışarak, veritabanından çektiği verileri indeksleyen, sonrasında arama sorgularına cevap veren bir arama motoru sunucusudur. Sphinxin indeksleme yapabilmesi için tablo yapısının (MyISAM, InnodDB vb) önemi yoktur. Ayrıca dökümantasyonunda yazdıklarına göre, sadece MySQL için değil, PostgreSQL için de desteği mevcut..

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ı

22 Jan

Sphinx Kurulumu

Sphinx kurulumu için aşağıdaki adımları takip etmek gerekiyor. Öncelikle adımları yazıyorum, sonra bunları açıklamaya çalışacağım :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mkdir sphinx-base
cd sphinx-base
wget http://pecl.php.net/get/sphinx -o /dev/null -O  sphinx.tar.gz
svn checkout http://sphinxsearch.googlecode.com/svn/trunk
cd trunk/api/libsphinxclient/
./configure --prefix=/usr/local
make
make install
cd ~/sphinx-base
tar -zxvf sphinx.tar.gz
cd sphinx-1.1.0/
phpize
/configure --prefix=/usr/local --with-sphinx
make
make install
nano /etc/php5/conf.d/sphinx.ini
extension=sphinx.so
cd ~/sphinx-base/trunk
configure --prefix=/usr/local
make
make install

(1-2) İndirdiğimiz dosyaların derli toplu olabilmesi için bir dizin oluşturdum, bu dizini home klasörümde oluşturdum. Siz de aynı şekilde home dizininizde sphinx-base diye bir klasör oluşturursanız , burdaki örneğin çalışabilmesi mümkün olur. Klasörü oluşturduktan sonra klasöre giriyoruz

(3-4) PHP sphinx eklentisini, sonrasında da sphinx kodlarını sitelerinden indiriyoruz

(5-6-7-8) PHP eklentimizin çalışabilmesi için, libsphinxclient kütüphanesine ihityaç var. Bu yüzden öncelikle bunu derliyoruz.

(9-10-11-12-13-14-15-16-17) Bu uzun adımlarda da php eklentisini derliyoruz.

(18-19-20-21) Bu adımlarda da sphinxi derliyoruz.

Yuakrıdaki adımlarda mutlaka dikkat etmeniz gereken şeyler var. Bunlardan ilki, yukarıda belirttiğim gibi home klasörünüzde sphinx-base diye bir klasör
oluştrumuş olmanız gerekli.
Anlattığım tarih ititbari ile, php sitesinden indirdiğim (3) dosyayı indirememiş olabilirsiniz. Dosyanın doğru yolunu bularak sphinx-base klasöürne indirin ve yukarıda belirttiğim şekilde (10) sphinx-base klasörü içerisine açın. İndirdiğim versiyondaki klasör ismi sphinx-1.1.0 . Sizin edindiğiniz dosyanın ismi farklı olabilir, bu yüzden 11. adımda doğru klasöre giriş yapmalısınız.

Sisteminizde, derlemeler için gerekli kütüphaneler mevcutsa, kurulumu sorunsuz olarak tamamlanacaktır. Bir sonraki yazıda, sphinx ile gelen örnek veritabanı ve örnek ayarlar ile basit bir örnek kod ekleyeceğim.

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ı