• 03-01-2009, 10:02:04
    #1
    $stra = $kelime;
    $stra = str_replace(" ","&kel[]=",$stra); 
    parse_str($stra, $benzer);
    $kel0 = $benzer['kel'][0]; 
    
    if ($benzer['kel'][1] && strlen($benzer['kel'][1])>3){$kel1 = " or `baslik` LIKE '%".$benzer['kel'][1]."%'";} 
    if ($benzer['kel'][2] && strlen($benzer['kel'][2])>3){$kel2 = " or `baslik` LIKE '%".$benzer['kel'][2]."%'";} 
    if ($benzer['kel'][3] && strlen($benzer['kel'][3])>3){$kel3 = " or `baslik` LIKE '%".$benzer['kel'][3]."%'";} 
    if ($benzer['kel'][4] && strlen($benzer['kel'][4])>3){$kel4 = " or `baslik` LIKE '%".$benzer['kel'][4]."%'";} 
    if ($benzer['kel'][5] && strlen($benzer['kel'][5])>3){$kel5 = " or `baslik` LIKE '%".$benzer['kel'][5]."%'";} 
    if ($benzer['kel'][6] && strlen($benzer['kel'][6])>3){$kel6 = " or `baslik` LIKE '%".$benzer['kel'][6]."%'";} 
    if ($benzer['kel'][7] && strlen($benzer['kel'][7])>3){$kel7 = " or `baslik` LIKE '%".$benzer['kel'][7]."%'";} 
    if ($benzer['kel'][8] && strlen($benzer['kel'][8])>3){$kel8 = " or `baslik` LIKE '%".$benzer['kel'][8]."%'";} 
    
    $sorgu=mysql_query("SELECT * FROM `bilgiler` WHERE `baslik` LIKE '%".$kel0."%'".$kel1."".$kel2."".$kel3."".$kel4."".$kel5."".$kel6."".$kel17."".$kel8." limit 0,10");
    ARKADAŞLAR Bu kodla $kelime değişkenindeki her kelimeyle
    %kelime1% or baslik LIKE %$kelime2% ...
    diye veritabanında benzer konuları arattırıyorum

    Fakat hit fazla ve bunu eklediğimde VPS memory kullanımı arttı
    bu kodu $kelime=$_GET['kelime']; ile alıyorum her sorguda

    yavaşlama nedeni nedir?
    Şimdiden tşk
  • 03-01-2009, 10:23:14
    #2
    Üyeliği durduruldu
    alanlarınızda full text search aktif mi?
  • 03-01-2009, 10:34:40
    #3
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    alanlarınızda full text search aktif mi?
    konuyu nette araştırdıgımda "full text search" le çok karşılaştım
    ama ne oldugunu bilmiyorum malesef

    biraz açıklarmısınız
  • 03-01-2009, 11:07:59
    #4
    Üyeliği durduruldu
    mysql in bir özelliği diyelim herhangi bir alana full text search verirseniz özellikle böyle like gibi aramalarda gözle görülür performans artışı yakalarsınız. Direk metin tabanlı arama yapacağınız için kendi ona göre arka planda indexliyor.

    tablonuzda

    ALTER TABLE `bilgiler` ADD FULLTEXT baslikindex (baslik)

    gibi bir değişiklik yapip tekrar deneyebilirsiniz
  • 03-01-2009, 11:22:25
    #5
    teşekkürler bununda etkisi olacağına eminim

    ama asıl sorunu buldum.
    Arama sonucu bulunamadıgında ORDER BY RAND()
    kullanıyordum. En çok kasan oymuş...
  • 03-01-2009, 11:39:59
    #6
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    mysql in bir özelliği diyelim herhangi bir alana full text search verirseniz özellikle böyle like gibi aramalarda gözle görülür performans artışı yakalarsınız. Direk metin tabanlı arama yapacağınız için kendi ona göre arka planda indexliyor.
    tablonuzda
    ALTER TABLE `bilgiler` ADD FULLTEXT baslikindex (baslik)
    gibi bir değişiklik yapip tekrar deneyebilirsiniz
    hocam yanlış bilgilendirmeyin, fulltext ile "like" ın yakından uzaktan ilgisi yoktur. fulltext ten faydalanmak için sorgunun şu şekilde olması gerekir;
    SELECT * FROM tablo WHERE MATCH (isim,icerik) AGAINST ('aranacak');
  • 03-01-2009, 11:44:11
    #7
    huseyinkeles adlı üyeden alıntı: mesajı görüntüle
    hocam yanlış bilgilendirmeyin, fulltext ile "like" ın yakından uzaktan ilgisi yoktur. fulltext ten faydalanmak için sorgunun şu şekilde olması gerekir;
    SELECT * FROM tablo WHERE MATCH (isim,icerik) AGAINST ('aranacak');
    Like pek kasmıyor asıl kasan order by rand() ı kaldırınca sorun düzeldi

    ama ben benzer başlıklar aramasında
    WHERE MATCH (isim,icerik) AGAINST mi
    LIKE mı kullanmalıyım.
  • 03-01-2009, 11:49:08
    #8
    Üyeliği durduruldu
    Eğer direk phpmyadminden bunu aktifleştirmek isterseniz tablo yapısına girdikten sonra eylem bölümünün en sağıda "T" işareti var. Bastığınızda bu özelliği aktif ediyor.
  • 03-01-2009, 13:10:22
    #9
    Üyeliği durduruldu
    Nukrox adlı üyeden alıntı: mesajı görüntüle
    Like pek kasmıyor asıl kasan order by rand() ı kaldırınca sorun düzeldi
    ama ben benzer başlıklar aramasında
    WHERE MATCH (isim,icerik) AGAINST mi
    LIKE mı kullanmalıyım.
    yanlış ifade etmişim özür diliyorum ama çok duymuştumda araştırmak kısmet olmamıştı bu vesileyle ögrenmiş olduk

    66000 kayıtlı tablomda normal like ile arama yaptırdığımda 0,33 sn de getirirken text search ile 0.02 sn de getirdi

    MySql Fulltext arama adresinde uygun bir döküman var