• 17-12-2010, 11:24:37
    #10
    Üyeliği durduruldu
    bu tür karakter sorunları için ben arama verilerini tek sütuna indirgeyip tek fonk. dan geçiriyorum, hem db verisinde hemde aranan kelimede böylece büyük harf sıkıntısı çıkmıyor.

    misal

    İzzet veya Izzet kelimesi veritabanına izzet olarak ekleniyor,
    kullanıcı İzzet veya ızzet aradığında aynı fonk.dan geçirdiğim için izzet olarak aranıyor.
  • 23-12-2010, 16:28:07
    #11
    arkadaşlar burada önceligi başlıga göre vermeyi düşünüyorum.
    örnegi abc okulu dendiginde abc,okulu kelimelerini bulup ilk kayıt yapanları çıkartıyor. en son kayıt olan abc okulu sonlarda cıkıyor. Yani asıl aranan veri sonda çıkıyor ne yapabilirm?
  • 29-12-2010, 15:23:18
    #12
    Hala aşagıdaki kodda başlıkta çıkanlara öncelik tanıyı yapamadım.

    $ezr->query_mysql("SELECT id,name,phone,fax,address,tag FROM news WHERE name like '". $db->escape($name)."' or name like '%". $db->escape($name)."' or  name like '". $db->escape($name)."%' or  name like '%". $db->escape($name)."%' or  tag like '%". $db->escape($name)."%' or  description like '%". $db->escape($name)."%'");
  • 29-12-2010, 15:42:33
    #13
    yanlış anladım pardon
  • 29-12-2010, 16:49:26
    #14
    dijitalkomut dediginle ilgili degil.

    örnegin abc haberi yazdım 2 tane konu var birinde başlıkta abc haberi digerinde konunun içinde abc haberi geçiyor.

    Burada ilk cıkartacagı başlıkta olan olmalı
  • 29-12-2010, 16:57:19
    #15
    Üyeliği durduruldu
    Mysql REGEXP kullanacaksın dostum

    WHERE testcolumn REGEXP '\n'
  • 29-12-2010, 18:21:10
    #16
    bhcoder örnek verebilirmisin? regexp fonksiyonu bunu uygunmu olur :S
  • 29-12-2010, 21:32:53
    #17
    Sıralama olayını "ORDER BY sutun_adi DESC" şeklinde yapabilirsiniz.
  • 29-12-2010, 22:47:18
    #18
    Dediğinizden anladığım kadarı ile böyle birşey istiyorsunuz



    $query = 'abc haberi';
    $query = addslashes($query);
    
    $sql = '
    select
     *,
      match(title) against("'.$query.'") as ft_result_1,
      match(body) against("'.$query.'") as ft_result_2
    from
       table
    where
      (
          match(title) against("'.$query.'") ||
          match(body) against("'.$query.'")
      )
    order by ft_result_1, ft_result_2 desc
    ';
    Not: title ve body alanları ayrı ayrı full text search olarak belirtilmesi gerekir.
    Not2: MySQL sunucunuzda "ft_min_word_len" default olarak 4 dür. Bu şu anlama gelir; en az 4 karakter içeren bir arama gerçekleştirebilirsin. 3 karakter gerekiyorsa bu değerin ayarlanması gerekir.
    Not3: Çalışmaz ise aşağıdaki kodu deneyebilirsiniz.

    $query = 'abc haberi';
    $query = addslashes($query);
    
    $sql = '
    select
     *,
      match(title) against("'.$query.'" IN BOOLEAN MODE) as ft_result_1,
      match(body) against("'.$query.'" IN BOOLEAN MODE) as ft_result_2
    from
       table
    where
      (
          match(title) against("'.$query.'" IN BOOLEAN MODE) ||
          match(body) against("'.$query.'" IN BOOLEAN MODE)
      )
    order by ft_result_1, ft_result_2 desc
    ';