Лучше всего здесь не использовать LIKE
, а использовать индексы FULLTEXT Mysql.Для этого вы создаете индекс FULLTEXT для столбцов, в которых вы хотите искать.
ALTER TABLE searchengine ADD FULLTEXT (ключевые слова);
Чтобы сделать запрос, сделайте что-то вроде этого:
SELECT * FROM искомый двигатель WHERE MATCH (ключевые слова) ПРОТИВ ("$ searchterm");
Вы можете комбинировать разные MATCH AGAINST
запросы для удовлетворения всех ключевых слов.Кроме того, вы можете указать бит MATCH AGAINST
в предложении SELECT
вашего запроса.Это вернет счет, который вы затем сможете использовать для ранжирования ваших результатов.
Кроме того, вы также можете проделать некоторую работу по прохождению даже перед выполнением запроса.Используя баллы, сгенерированные различными операторами MATCH
, вы можете ранжировать все слово выше, чем слово с основанием.