• 16-12-2010, 16:34:30
    #1
    name,description,tag aramalarında full text arama yapıyorum.

    Örnegin "php kitap" diye arattıgımda

    name de "php kitap" olup olmadıgını bakacak sonrasında description ve tag kelimesinde "php kitap" arama yapması gerekiyor.

    Buradaki sonuçlardan sonra php veya kitap kelimesi geçenleri bulacak. Bunu nasıl yapabilirim?
  • 16-12-2010, 16:43:12
    #2
    Üyeliği durduruldu
    aramada çıkan sonuç sıfırsa yada 5den azsa dersin o senin seçimin. explode ile parçalarsın gelen kelimeyi hepsini for ile döndürüp tag da sorgulatırsın sorgulattırırsın sonuçları getirir.
  • 16-12-2010, 16:44:25
    #3
    Üyeliği durduruldu
    ALTER TABLE articles ADD FULLTEXT(body, title);
    <?php 
       $query = " 
            SELECT * FROM articles 
            WHERE MATCH(title, body) AGAINST ('PHP') 
        "; 
        $sql = mysql_query($query); 
        /* output results */ 
    ?>
  • 16-12-2010, 17:15:37
    #4
    bhcoder o kısmını yazdım.

    $ezr->query_mysql("SELECT id,name,description FROM news WHERE MATCH(name,description,tag) AGAINST ('". $db->escape($name)."' IN BOOLEAN MODE)");
    örnegin php kitap diyince ilk yapılmış php yazısını buluyor ve önce onu gösteriyor.
  • 16-12-2010, 17:27:42
    #5
    Üyeliği durduruldu
    önce tabloyu full text yapın
  • 16-12-2010, 17:34:42
    #6
    gerekli olan 3 fieldi full text yapmıştım

    Alıntı
    FULLTEXT KEY `name` (`name`,`description`,`tag`)
  • 17-12-2010, 09:07:03
    #7
    bu konu hakkında çözüm önerisi olan varmı?
  • 17-12-2010, 10:14:45
    #8
    Üyeliği durduruldu
    Alıntı
    name de "php kitap" olup olmadıgını bakacak sonrasında description ve tag kelimesinde "php kitap" arama yapması gerekiyor.
    bunu sadece fulltext ile yapamazsın.

    bunun için like araması eklersen olabilir;

    misal php kitap araması, name sütununda php veya kitap olursa sonuç döndürür

    $ezr->query_mysql("SELECT id,name,description, MATCH(name,description,tag) AGAINST ('". $db->escape($name)."' IN BOOLEAN MODE) AS SCORE FROM news WHERE (name like '%php%' || name like '%kitap%') && MATCH(name,description,tag) AGAINST ('". $db->escape($name)."' IN BOOLEAN MODE) ORDER BY SCORE DESC");
  • 17-12-2010, 10:49:33
    #9
    denedim sorun verdi şimdilik full text arama yerine sadece like kullanıyorum bitince tekrar full text ile arama yapacagım. utf8 ile arama yaparken şu sorun cıktı büyük İ ve küçük i leri farklı olarak görüyor bunun için sizce ne yapmam lazım?