how to increase speed of this mysql query?
First retrieve id and the computed scores, then sort and join the result back to news:

SET @line = 0;
SET @last = 25;
SELECT B.*,titlescore,timescore,textscore FROM
(
    SELECT id,titlescore,timescore,textscore,combinedscore,(@line:=@line+1) line
    FROM
    (
        SELECT id,
            MATCH (`title`) AGAINST ('tax in work') * 1.65 AS `titlescore`
            (
                CASE
                    WHEN time &gt;=1432173380 THEN 21
                    WHEN time &gt;=1432162580 THEN 18
                    WHEN time &gt;=1432097780 THEN 15
                    WHEN time &gt;=1431903380 THEN 11
                    WHEN time &gt;=1431320180 THEN 7
                    ELSE 0
                END
            ) * 1.75 ) AS `timescore`,
            MATCH (`text`) AGAINST ('tax in work') * 0.65 AS `textscore`,
            MATCH (`title`) AGAINST ('tax in work') * 1.65+
            (
                CASE
                    WHEN time &gt;=1432173380 THEN 21
                    WHEN time &gt;=1432162580 THEN 18
                    WHEN time &gt;=1432097780 THEN 15
                    WHEN time &gt;=1431903380 THEN 11
                    WHEN time &gt;=1431320180 THEN 7
                    ELSE 0
                END
            ) * 1.75 ) + MATCH (`text`) AGAINST ('tax in work') * 0.65
            AS combinedscore
        FROM news
    ) AA WHERE combinedscore &gt;= 35
    ORDER BY combinedscore DESC
) A LEFT JOIN B news USING (id)
WHERE line &lt;= @last;


Give it a Try !!!