Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск аналогов товара 
:(
    Опции темы
batek
Дата 22.2.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.2.2006

Репутация: нет
Всего: нет



Задача которую я немогу осуществить:На некотором сайте имеются некоторые товары под каждым из которых располагается кнопочка найти аналоги при нажатии на которую модуль должен вывести от 1 до 5 аналогов или сказать что аналогов нет. База данных к которой конектится модуль состоит из следующих полей id(ид номер товара),
marka(название), group1(группа),param1,..,param32(параметры от 1 до 32),cost(цена). Если кто знает как сделать напишите пожалуйста.
PM MAIL   Вверх
-=Ustas=-
Дата 22.2.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Ты должен знать, что содержится в остальных полях. По полям, которые ты дал, нельзя определить аналоги.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
batek
Дата 22.2.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.2.2006

Репутация: нет
Всего: нет



-=Ustas=- надо проверять по параметрам выделить или как то пометить какой параметр нужно проверять первым, какой вторым и так далее если в результате вывелось >5 аналогов то уже проверять по цене в пределах от (cost-n) до (cost+n)
PM MAIL   Вверх
CTAPbIuMABP
Дата 22.2.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: -1
Всего: 1



Код

SELECT id FROM `table` WHERE `cost`BETWEEN (`cost`-$delta AND `cost`+$delta) ORDER BY parametr1 ASC, parametr2 DESC, parametr3, ... parametr32 LIMIT 5

PM WWW ICQ Skype   Вверх
batek
Дата 22.2.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.2.2006

Репутация: нет
Всего: нет



CTAPbIuMABP не не так он тут тока по цене смотрит
PM MAIL   Вверх
IZ@TOP
Дата 22.2.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 4
Всего: 73



Предлагаю несколько переделать вариант CTAPbIuMABP, но идея думаю ясна. Это самое простое решение.
Только диапазон нужно брать конкретно 2 менее текущего ID и два более текущего ID.
Единственное, так всегда будет что-то выводиться. Поэтому можно сделать еще сравнение по полям в самом РНР. К примеру, если больше 50% полей совпадают данными с тем, что имеется у товара, тогда выводим, если менее 50% совпадений, не выводим.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
-=Ustas=-
Дата 22.2.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Цитата(IZ@TOP @ 22.2.2006, 20:44 Найти цитируемый пост)
Только диапазон нужно брать конкретно 2 менее текущего ID и два более текущего ID.

Это уже будет совсем не аналогичность товаров. Скорее всего, насколько я могу предполагать, скорее всего у товара есть поля с его описанием, предназначение и т.д., т.е. полная информация о товаре. Вот в эту сторону и надо копать, даже точнее в сторону полнотекстового поиска по информации из текущего товара.
В полнотекстовом поиске есть такая фишка, как извлекать величины релевантности в явном виде по совпадениям (плюс, еще придется использовать логический режим), вот тут-то и надо выдирать релевантность и решать, анологичен ли товар или нет.
Т.е. одним словом, нужно определять и сверять по полям с полной информацией о товаре.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
batek
Дата 22.2.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.2.2006

Репутация: нет
Всего: нет



Параметры такие:

Производитель: LG Корея (param1)
Гарантия: 36 месяцев (param2)
Стандарт: GSM 900/1800 (param3)
Размер: 105х44х16 мм (.....)
Вес: 73 грамм
Батарея: Li-Ion 780 мАч
Время работы в режиме ожидания: до 200 час.
Время работы в режиме разговора: до 3 час.
Дисплей: Цветной. 65000 цветов (cSTN). 128 x 128 точек
Встроенная фотокамера: Есть. Разрешение до 640х480
Записная книжка: Расширенная. 200 имен. До 4 номеров и адрес электронной почты на имя. Группы
Русский ввод (в зап.книжку и SMS): Есть
Голосовой набор: Нет
Диктофон: Есть
FM приемник: Нет
ИК-порт: Нет
Bluetooth: Нет
WAP: WAP 2.0
MMS: Есть
GPRS: Есть
HSCSD: Нет
Модем: Есть
Е-мail клиент: Нет
Органайзер: Есть
Поддержка Java: Есть
Игры: Есть
Вибро - звонок: Есть
Звонок: Полифонический, 40-тональный. + загружаемые (param28)
все эти параметры VARCHAR
Добавлено @ 22:11
-=Ustas=-Что за полнотекстовый поиск и какими функциями он осуществляется

Это сообщение отредактировал(а) batek - 22.2.2006, 22:08
PM MAIL   Вверх
CTAPbIuMABP
Дата 23.2.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: -1
Всего: 1



$result = масив значений этого товара

Код

SELECT id FROM `table` WHERE `cost`BETWEEN (`cost`-$delta AND `cost`+$delta) AND ( parametr1 = '{$result['parametr1']}' AND ( parametr2 '{$result['parametr2']}' AND ( parametr3 = '{$result['parametr3']}', ... AND (parametr32='{$result['parametr1']}'))[32скобки])) LIMIT 5


бред получается

может есть функция которая сравнивает строки на похожесть? хотя тоже бред((( придется ВСЮ таьлицу по ВСЕМ полям ровнять....

Ты б выбрал допустим 3-4 значения Стандар, Дисплей, Производитель, Модем например и выбирал
PM WWW ICQ Skype   Вверх
batek
Дата 23.2.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.2.2006

Репутация: нет
Всего: нет



А если сделать форму гда галочками выбираешь нужные параметры для поиска, то как сделать чтобы они подставлялись в запрос
Добавлено @ 12:25
а вообще лучше всего сделать так как на сайтеhttp://www.techhome.ru/catalog/byt/AA500B13_00000000_5.htm
при нажатии на кнопку похожие товары
PM MAIL   Вверх
CTAPbIuMABP
Дата 23.2.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: -1
Всего: 1



IMHO тебе лучше прилепить еще одно 33-е поле к котором через запятую указать товары которые на него похожы по твоему мнению и потом выбирать только из этого поля

Код

WHERE paramtr33 LIKE '.{$result['id']}.'


это ОЧЕНЬ ускорить выборку
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.