Идеальная система подбора квартир

В проекте использовали
Клиент пришел с проблемой
Компания хотела получить систему подбора квартир на сайте, которая могла бы учитывать все возможные параметры, заданные клиентом. Например: цена, этаж, наличие телевизора, техники, детской площадки. При этом фильтр должен подбирать похожие квартиры, которые удовлетворяют заданным параметрам не только полностью, но частично, по большинству критериев.
Проект запомнился своими сложными интерфейсами и большими формами. Для любых сведений о квартире есть поля, галочки, переключатели. И фильтровать квартиры можно как угодно. А еще в проекте интересная система ранжирования, которая подсказывает подходящие варианты.
Всегда есть особенности
Для максимально точного результата такого поиска, нужно было учесть все существующие параметры, важные для клиентов. А также найти решение, которое будет быстрым и при этом точным, чтобы выдавать максимально релевантную выборку для заданных параметров.
Как мы это сделали
Мы собрали все возможные параметры квартир и разбили их по группам, определив категории для разработки фильтров которыми сможет оперировать пользователь. Всего получилось 150 параметров и 8 групп. Система разрабатывалась так, чтобы в любой момент можно было добавить новый параметр выбора.
Для каждого параметра мы выбрали 3 весовых коэффициента. Максимум – если система сочтет параметр важным для клиента (те, которые он сам выбрал в фильтре), средний вес – для зависимых от выбранных параметров, минимум – для всех остальных.
Мы использовали поисковый движок Apache Solr, который позволяет быстро выполнять операции в больших базах данных. Кроме того, он передает функции в качестве полей для выборки и сортировки. В результате тесты по работе движка по выборке на примере 15000 квартир для различных наборов фильтров показали скорость выдачи в пределах 120-150 мс.