php+mysql как сделать выбор из нескольких таблиц по релевантности (сложный алгоритм)

интернет программирование php MySQL алгоритмы

Например, есть в MySQL таблицы:
квартиры - с полями квартиры.id, квартиры.name
данные типа:
1, квартира первая
2, квартира вторая
4, комната
5, общежитие
6, коммуналка

таблица 2:
мебель - с полями мебель.id, мебель.name
соотвествтенно данные, например:
3, телевизор
4, телефон
6, холодильник
7, диван

и связывающая их таблица: кварт-меб - с полями квартиры.id, мебель.id
с данными о том, что в квартире:
1, 3
1, 7
2, 7
3, 4
3, 6
3, 7
5, 4
5, 6

Мне необходимо организовать поиск: в квартире есть : (выбирает пользователь сайта) диван, телевизор, холодильник
и надо выбрать из таблицы квартиры поле квартиры.name, но выбрать релевантно, то есть сначала чтобы шли квартиры, где это есть все, потом где чего-то нет и т.д. потом где что-то одно

Никак не могу придумать алгоритм выбора данных на PHP
Помогите придумать алгоритм, чтобы сервер не захлебнулся от нескольких сот запросов, т.к. все таблицы вымышленные и не имеют отношения к квартирам (но логика работы такая же), то в таблицах очень много записей.
Кто умеет алгоритмы составлять помогите плиз.


Примечание:
Пучу, релевантность - это не фича, про against я прекрасно знаю. Релевантность - это возможность выдать пользователю то, что он ищет с большей вероятностью.
Ответы:
select * from (select f.id id, count(*) cnt, max(f.name) name from flat_furniture ff left join flat f on (ff.flat_id = f.id) where ff.furniture_id in (<идентификаторы мебели, которую выбрал пользователь>) group by f.id) t order by t.cnt desc
релевантность это стандатная фича полнотекстового поиска
меньше слов
иди гугли в сторону "mysql fulltext match against"


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.