Как на сайте реализовать функционал похожие товары? С помощью только одних запросов в БД, думаю это не получиться. Описание работы: есть товар с характеристиками (цена, цвет, другие технические характеристики). При отсутствии выбранного товара (наличие = 0), предлагать максимально похожий товар из этой категории товаров. Как сравнить по цифровым значениям в характеристикам я понимаю еще, но как быть если имеем дело с такой характеристикой, которая буквенная, например белый цвет? Можно использовать словари, конечно. Реализация на PHP+Mysql. Разработки сторонних стартап-проектов не предлагать, считаю их лишней тратой денег за такой функционал.
В 3 этапа.
1. Ближайшие цифровые характеристики у имеющихся товаров относительно отсутствующему: каждая по-отдельности вверх и вниз, формирование списка с весами релевантности.
2. Подстановка текстовых переменных и поиск по списку (из п.1) с использованием алгоритма расстояния Левенштейна с формированием СВОЕГО списка весов релевантности.
3. Объединение этих двух списков с суммированием весовых показателей и последующей сортировкой по весовым значениям: самый максимальный вес - будет самым похожим товарозаменителем.
PS: если у Вас в БД: "желтый", "yellow", "песочный", "sand", "светло-жёлтый", "светлый песок" - то тут Вы должны использовать синонимайзер, написанный вручную для использования до п.2.
- Самый простой вариант
Предлагать товары из той же категории. Просто, Жирно, Функционально.
- Посложнее
Из той же категории, но с учетом цены.
- Посложнее
Написать функцию, которая ищет товары по фундаментальным характеристикам, например, если это магазин одежды, то такая характеристика - размер одежды. Ну и искать соответственно в той же категории.
- Изврат
Для каждого товара назначать похожие вручную. Видел в CMS как то такую реализацию.
Способов много, только вам выбирать, что именно вам хочется.
- попробовать собрать статистику по близким по времени кликам из одной страницы выдачи.
- с цветами и т.п. - можно создать таблицу цветов и указывать в товаре id цвета из этой таблицы и выборки на ее основе делать, а уж контенты пусть тот же розовый цвет обзывают как хотят в своих описаниях
Помимо перечисленного - можно прикрутить тегирование, и выдавать товары с совпадающими тегами (больше одного совпадения, сортировать в порядке уменьшения количества совпадений). Но нужно, ествественно, тогда ещё удобный инструмент для редактирования списка тегов изобретать.