Ответ 1
Когда вы говорите о "релевантности", вы действительно хотите искать естественный язык, который поддерживается MySQL полнотекстовым поиском. Синтаксис отличается от обычного как запросы, и вам нужно добавить специальный индекс в таблицу, но упорядочение по релевантности возможно таким образом.
Здесь, как MySQL вычисляет релевантность (по ссылке):
Когда MATCH() используется в предложении WHERE, как в примере, показанном ранее, возвращаемые строки автоматически сортируются с наивысшей релевантностью. Значения релевантности - неотрицательные числа с плавающей запятой. Нулевая релевантность означает отсутствие сходства. Релевантность вычисляется на основе количества слов в строке, количества уникальных слов в этой строке, общего количества слов в коллекции и количества документов (строк), содержащих определенное слово.
Чтобы создать полнотекстовый индекс в существующей таблице, используйте модификатор FULLTEXT:
CREATE FULLTEXT INDEX index_name
ON table_name (col1, col2, col3)
Затем вы можете выполнить такой запрос, чтобы получить результаты в порядке актуальности:
SELECT * FROM table_name
WHERE MATCH (col1,col2,col3)
AGAINST ('keyword' IN NATURAL LANGUAGE MODE);