I would make it look like what Arthur did, just by assigning the importance of the result to a value. For example:
- If there is result in the title assigns the result 2
- If there is result in content assigns to result 1
- Sum it all, and put it in descending order ( FROM THE HIGHEST RELEVANCE TO A
MINOR)
Select would look like this:
SELECT
titulo, id
FROM
tabela
WHERE
titulo LIKE '%abc%'
OR conteudo LIKE '%abc%'
ORDER BY (
CASE WHEN `titulo` LIKE '%abc%'
THEN 2 # título é o mais importante então o valor é 2
ELSE 0
END
) + (
CASE WHEN `conteudo` LIKE '%abc%'
THEN 1 # conteúdo é o segundo mais importante então o valor é 1
ELSE 0
END
) DESC;
After the comment "Ah, one more thing, there are items who have the term in the title and in the content, in this case, prioritize title"
Master if you can do something like this:
SELECT
titulo, id
FROM
tabela
WHERE
titulo LIKE '%abc%'
OR conteudo LIKE '%abc%'
ORDER BY (
CASE WHEN `titulo` LIKE '%abc%' AND `conteudo` NOT LIKE '%abc%'
THEN 2 # título é o mais importante então o valor é 2
ELSE 0
END
) + (
CASE WHEN `conteudo` LIKE '%abc%' AND `titulo` NOT LIKE '%abc%'
THEN 1 # conteúdo é o segundo mais importante então o valor é 1
ELSE 0
END
) + (
CASE WHEN `conteudo` LIKE '%abc%' AND `titulo` LIKE '%abc%'
THEN 2 # valor é 2 pois a relevância é o título
ELSE 0
END
) DESC
show, that worked out tbm!!!
– Leandro Marzullo