я разрабатывал похожую систему, второй похожий проект в разработке.
пока для поиска использую Сфинкс — статья про поиск в процессе написания (через недельку другую будет готова).
Основные идеи по структуре хранения:
— есть товары (спецификациии)
— есть предложения (данные от магазинов)
— есть модели
-есть каталог
Все предложения от магазинов привязаны к спецификациям и/или к моделям.
Запускается робот, который анализирует названия товаров и принадлежность их к категориям и привязывает их к моделям. В зависимости от того, как поработают эти роботы — будет построен хороший индекс, и соответственно качественный поиск.
И еще не забываем, что в ЯМ — есть куча контент-менеджеров, которые редактируют «спецификации товаров» и сильно облегчают «жизнь роботов».
Основные идеи поиска:
— строим индекс по каталогу, названиям, моделям,
-на каждый индекс делаем по запросу.
— в зависимости от полученных результатов делаем соответствующие вывод
— делаем анализ взаиморасположения поисковых слов
— параметры проходят полнотекстный поиск.
Честно говря я хотел пож этот проект сделать свой поисковик, но сил не хватит. Сперва надо запустить со Сфинксом.
Поддерживаю идею MongoDb как средство хранения информации и быстрого ее извлечение. C использованием MongoDb может быть маленькая проблема (кроме ограничения на размер данных в 2 Гб для 32 бит Ось ), которая выльится в большой геморой: пока индексатор Сфинкса на нее не написан. Я тоже собирался ее использовать, но пока остановился на мускуле.
На последней PHPConf был хороший доклад про использование Сфинкса по поиску миллиона товаров dostavka.ru ( у меня сайт агрегатор — было 2 миллиона) Видео есть на сайте PHPConf