• 30-12-2010, 11:18:24
    #19
    ilk örnegi yaptıgımda aşagıdaki gibi hata verdi.

    Alıntı
    Warning: Unknown column 'ft_result_1' in 'order clause' in /home/index/domains/site.com/public_html/ezsql/mysql/ez_sql_mysql.php on line 204 Warning: Can't find FULLTEXT index matching the column list in /home/index/domains/site.com/public_html/ezsql/mysql/ez_sql_mysql.php on line 204 Bulunamadi
  • 30-12-2010, 11:28:19
    #20
    Alıntı
    Warning: Can't find FULLTEXT index matching the column list
    alanlara FULLTEXT indexi atamamışsınız. Bunu düzeltirseniz büyük ihtimalle çalışacaktır.
  • 30-12-2010, 12:41:50
    #21
    tablo yapım aşagıdaki gibi.

    CREATE TABLE IF NOT EXISTS `news` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(110) default NULL,
      `mail` varchar(110) default NULL,
      `phone` varchar(20) default NULL,
      `phone2` varchar(20) NOT NULL,
      `address` text,
      `description` text NOT NULL,
      `owner` varchar(85) default NULL,
      `www` varchar(45) default NULL,
      `accept` tinyint(4) default '0',
      `closed` tinyint(4) default '0',
      `addtime` datetime default NULL,
      `user` int(11) default NULL,
      `counter` int(11) NOT NULL,
      `tag` varchar(240) NOT NULL,
      `membertype` tinyint(4) NOT NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `name_UNIQUE` (`name`),
      FULLTEXT KEY `name` (`name`,`description`,`tag`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin5 AUTO_INCREMENT=97 ;
  • 31-12-2010, 00:13:30
    #22
    baya zor işmiş bu full text olayı
  • 27-06-2015, 13:07:47
    #23
    mustafa90 adlı üyeden alıntı: mesajı görüntüle
    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
    ';
    üçüncü dördüncü bir kolon daha yazmak istersek örneğin: ili='İSTANBUL' gibi bişey