@hector
php программист

Выбор архитектуры каталога и поискового движка для организации фасетного поиска?

Каталог недвижимости, где есть объекты и их предки. К каждому объекту могут быть прикреплены определенные характеристики.

К примеру, объект ДОМ имеют характеристику 400м от метро. Объект КВАРТИРА наследуется от объекта ДОМ и имеют характеристику «количество комнат 3»

Необходимо организовать фасетный поиск объектов с учетом родительских характеристик. К примеру по 2м характеристикам :
Количество комнат и удаленность от метро.


В дальнейшем потребуются полнотекстовый поиск по объектам и преобразование текстовых запросов в фасетный поиск.
К примеру, запрос 3х комнатная квартира в 5 минутах от метро должна преобразовать минуты в метры и задать варианты для фильтра и далее отобразить все релевантные объекты.

Нужен совет с:
1) оптимальным выбором БД:
MongoDb
MySql – характеристики объектов хранятся в json в отдельном поле
MySql – характеристики объектов хранятся в отдельной таблице.

2) выбор поискового движка (возможность учета характеристик родительских объектов, организация фасетного поиска)
Sphinx и ElasticSearch.
  • Вопрос задан
  • 3633 просмотра
Решения вопроса 1
@stascer
web-программист
Реализовывал на MySQL + Sphinx. Фасетный поиск делается легко через MVA атрибуты. Поле с характеристиками объекта можно задать в JSON формате - в карточке объекта не придется делать лишний запрос на получение этих характеристик. Подробнее о фасетном поиске на сфинксе можно почитать тут.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mgyk
@mgyk
mongodb/elasticsearch
Проще структура, просто делаете набор атрибутов ( кол-во комнат, координаты, и т.д). Дальше в elasticsearch и оттуда вытаскиваете facet/aggregation. Можно вообще сразу данные в elasticsearch хранить, а не только индекс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы