Я использую следующие таблицы InnoDB в mysql для описания записей, которые могут иметь несколько поисковых тегов, связанных с ними:
TABLE records
ID
title
desc
TABLE searchTags
ID
name
TABLE recordSearchTags
recordID
searchTagID
Чтобы выбрать записи, основанные на произвольных входных данных поиска, у меня есть утверждение, которое выглядит примерно так:
SELECT
recordSearchTags.recordID
FROM
recordSearchTags
LEFT JOIN searchTags
ON recordSearchTags.searchTagID = searchTags.ID
WHERE
searchTags.name LIKE CONCAT('%','$search1','%') OR
searchTags.name LIKE CONCAT('%','$search2','%') OR
searchTags.name LIKE CONCAT('%','$search3','%') OR
searchTags.name LIKE CONCAT('%','$search4','%');
Я бы хотел ЗАКАЗАТЬ этот набор результатов, чтобы строки, соответствующие большему количеству поисковых терминов, отображались перед строками, которые соответствуют меньшему количеству поисковых терминов.
Например, если строка соответствует всем 4 поисковым запросам, она будет первой в списке. Строка, которая соответствует только двум условиям поиска, будет где-то посередине. И строка, которая соответствует только одному поисковому запросу, будет в конце.
Любые предложения о том, как лучше всего это сделать?
Спасибо!