Это вызов.Методом грубой силы было бы использовать UNION в подзапросе с числом.
Например,
select id, file, count(*) from
(select distinct id, file
from file_table
where FIND_IN_SET(keyword1, keywords)
UNION ALL
select distinct id, file
from file_table
where FIND_IN_SET(keyword2, keywords)
UNION ALL
select distinct id, file
from file_table
where FIND_IN_SET(keyword3, keywords)
UNION ALL
select distinct id, file
from file_table
where FIND_IN_SET(keyword4, keywords)
.... MORE UNION ALL ....) as files
group by id, file
having count(*) >= 3
Более эффективно, вы могли бы иметь отдельную таблицу с ключевыми словами и ID, одинкомбинация ключевых слов / идентификаторов в строке.Это устранит поиск по шаблону и сделает запрос более эффективным.
Следующим шагом будет переход к чему-то похожему на ElasticSearch и фильтрация по результату.