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
';