Özgür Bey MySql'in Fulltext Search i inanılmaz başarısız zaten. Performans olarakta sizi tatmin etmeyecektir.
Size önerim, Sphinx Search(C++ ile yazılmış) veya SOLR(Java ile yazılmış Tomcat'e ihtiyacı olur) kullanmanız. Gözünüzde büyütmeyin kullanımları oldukça basit fakat benim tercihim herzaman Sphinx Search ten yanadır. SOLR de indexleme yapabilmeniz için dökümanlarınızı XML formatına almanız gerekmekte (başka bir yöntemi varsa bilemiyorum) Sphinx Search ise install den sonra kullanımı oldukça kolay, bir tane ayar dosyası içerisinde SQL sorgunuzu yazıyorsunuz ve SphinxSearch onu düzenli periyotlarda sizin belirlediğiniz bir CronTab ile indexliyor (RealTime yapmazsanız). Size kalan sadece sorgu yapmak kalıyor ve Sphinx size sonuçları sadece dizi içinde id numaraları olarak döndürüyor ve siz bu id numaralarını MySQL in IN(564,987,98798,98789) şeklinde sonuçları alıp ekrana bastırıyorsunuz. *EK BİLGİ* Kendi adıma Faceted Search üzerine çok çalıştığımı belirtmek isterim SOLR de bu hazır bir kütüphane iken Sphinxte kendi veri yapımı oluşturdum, iki çekirdekli Linode VPS ve 2GB ramli bir makinada (arkada 10 tane daha site çalışır durumdayken) aldığım sonuçlar muazzam. http://demo.dizelweb.com/?i=katalog&kat=396 adresinden görebileceğiniz gibi, solda 200 adet filtre var ve 1000 tanede ürün var. Herbir filtre için toplam ürün belirtilmiş durumda yani sayfa her açılışında 200.000 işlem yapıyor. Hiçbir filtre işaretlenmemişken 200.000 işlemi saniyenin sadece binde 2 sinde yapmakta. 3 Ağustos 2015 01:21 tarihinde Özgür KOCA <[email protected]> yazdı: > Merhaba liste, > > Sorgularımın başarımını artırmak için çaba sarfediyorum fakat bir noktada > takıldım. > > Normalde şu SQL başarımından şikayetçiyim doğal olarak baştaki %'den index > kullanılamıyor (full table scan) > > SELECT * FROM imla WHERE kelime like '%ar_z%'; > > Yukarıdaki sql'in yerine geçecek bir fulltext search uygulamaya > çalışıyorum. Fulltext index oluşturup (ft_min_word_len = 1) şu şekilde > yazdım fakat işe yaramıyor: > > SELECT * FROM imla WHERE match(kelime) against('*ar*z*' in boolean mode); > > Kullanımda bir hata yapıyorum ya da eksik bilgim var. > > Yardımcı olursanız çok sevinirim. > > > > > Özgür Koca > [tankado.com][raspberry-pi.tankado.com] > > > <http://www.facebook.com/zerostoheroes/> > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- Ayhan DELİCAN tekneyatshop.com <http://www.tekneyatshop.com> | dikeylimit.net <http://www.dikeylimit.net> | plakatr.com
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
