Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите алгоритм действия.
 
 автор: DIM@   (09.04.2008 в 17:07)   письмо автору
 
 

Доброго времени суточек,
Задача такая нужно таблице товара присвоить категорию в автоатическом режиме обработке.
Есть таблица с товаром, где имеется поле наименование, ед.изм., цена, категория.
например:

Бумага наждачная №120 на тканевой основе 20 м Х 1000 мм 75292 | шт | 3480 | 0
Шлиф-круг на липучке покрытие стеарат цинка 125 мм Р60 8 отверстий | шт | 720 | 0
Валик MICROFIBRA MATRIX 175 мм 80701 | шт | 108 | 0

и есть база соответствий формата Строка для сравнения, id категории

пример:
Бумага наждачная | 10
Шлиф-круг | 32
Валик | 17

какой алгоритм поиска лучше применить, я додумался до двух:
1. Искать 1 или 2 слова в таблице соответствий - но тут проблемы с количеством слов для поиска, в таблице соответствий может содержатся соответствия, как с одинарными так и с большим кол-вом слов. :(
2. Пробигаться по таблице соответствий и сравнивать со стракой из таблицы товара, тут тоже проблема, скорость выполнения данного скрипта стримится к бесконечности :(

может у всезнающего all есть какие нибудь идеи организации данного процесса

   
 
 автор: elenaki   (09.04.2008 в 19:21)   письмо автору
 
   для: DIM@   (09.04.2008 в 17:07)
 

использовать не имена, а цифровые id - и проще искать и быстрее

   
 
 автор: DIM@   (09.04.2008 в 19:45)   письмо автору
 
   для: elenaki   (09.04.2008 в 19:21)
 

Мысль безусловно здравая, но наименования исключительно буквы :( С буквами понятнее как-то наименования товара выглядят :)

   
 
 автор: elenaki   (09.04.2008 в 20:40)   письмо автору
 
   для: DIM@   (09.04.2008 в 19:45)
 

добавить еще один столбец, индекс, с типом целое, можно autoincrement

   
 
 автор: DIM@   (09.04.2008 в 21:19)   письмо автору
 
   для: elenaki   (09.04.2008 в 20:40)
 

нужен именно тот алгоритм, который я описал. База товара заполняется из csv файла, так что не какие id здесь не помогут, только текстовое сравнение

   
 
 автор: DIM@   (09.04.2008 в 23:23)   письмо автору
 
   для: DIM@   (09.04.2008 в 17:07)
 

Жаль что нет вариантов решения :(

   
 
 автор: mechanic   (10.04.2008 в 09:26)   письмо автору
 
   для: DIM@   (09.04.2008 в 23:23)
 

вообще варианты всегда есть..
судя по твоему примеру, в таблице товара первым словосочетанием всегда идет название категории из таблицы соответствий, так почему бы не выбрать все данные из нее и не пройтись по таблице товара, обновляя id категории на основании вхождения названия категории в название товара?
что то вроде
update `goods` gd, `categories` ct set gd.cat_id = ct.id where gd.title like concat(ct.title, '%'); 

   
 
 автор: DIM@   (11.04.2008 в 11:21)   письмо автору
 
   для: mechanic   (10.04.2008 в 09:26)
 

Да, я уже приблизительно так и сделал.


$sql="UPDATE temp SET temp.rubricatorid=".$row['rubricatorid']." WHERE temp.Name LIKE '%".$row['compareStr']."%'";


Спасибо за участие :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования