ElasticSearch var birde onu deneyin. Ya da imkan varsa PostgreSQL'e terfi edin ;)

On 08/03/2015 02:51 AM, Ayhan DELİCAN wrote:
Ö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] <mailto:[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 <http://tankado.com/>][raspberry-pi.tankado.com
    <http://raspberry-pi.tankado.com/>]


    <http://www.facebook.com/zerostoheroes/>

    _______________________________________________
    Linux-programlama mailing list
    [email protected]
    <mailto:[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 <http://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

--

M.Atıf Ceylan

_______________________________________________
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