Предположим, у меня есть таблица MySQL, people
. Каждая запись содержит множество свойств, среди которых favourite_colour
, country
и age_group
.Извлечение записей MySQL на основе переменной совокупности точек сравнения
Что я хотел бы сделать, это извлечь записи из этой таблицы по их сходству с набором конкретных параметров. Например, «Красный», «Соединенные Штаты» и «18-25», лучшими результатами будут те записи, которые соответствуют всем трем. Это будет 100% матчей.
Однако я также хотел бы получить записи, которые соответствуют любой комбинации из двух параметров (совпадение 66%) или любого одного параметра (совпадение 33%). Кроме того, я хотел бы иметь возможность определять дополнительные точки сравнения (например, underwear_type
, marital_status
и т. Д.).
Есть ли относительно эффективное решение этой проблемы?
Это довольно умно! –
Это действительно очень хорошая идея. Было бы легко добавить к этому взвешивание, умножив один из результатов. –
Это действительно отличное решение. Пара примечаний/вопросов: из того, что я могу сказать, SQL не разрешает псевдонимы столбцов (т. Е. Match_score) в предложениях WHERE. Кроме того, я не думаю, что SUM() ведет себя так, как предполагал ваш запрос (он не принимает несколько аргументов); Документация MySQL указывает, что SUM() является функцией агрегации GROUP BY. Удаление предложения WHERE и замена суммы на операторы сложения заставили функцию работать как шарм. –