Ö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

Cevap