|
|
|
| Доброго времени суточек,
Задача такая нужно таблице товара присвоить категорию в автоатическом режиме обработке.
Есть таблица с товаром, где имеется поле наименование, ед.изм., цена, категория.
например:
Бумага наждачная №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 есть какие нибудь идеи организации данного процесса | |
|
|
|
|
|
|
|
для: DIM@
(09.04.2008 в 17:07)
| | использовать не имена, а цифровые id - и проще искать и быстрее | |
|
|
|
|
|
|
|
для: elenaki
(09.04.2008 в 19:21)
| | Мысль безусловно здравая, но наименования исключительно буквы :( С буквами понятнее как-то наименования товара выглядят :) | |
|
|
|
|
|
|
|
для: DIM@
(09.04.2008 в 19:45)
| | добавить еще один столбец, индекс, с типом целое, можно autoincrement | |
|
|
|
|
|
|
|
для: elenaki
(09.04.2008 в 20:40)
| | нужен именно тот алгоритм, который я описал. База товара заполняется из csv файла, так что не какие id здесь не помогут, только текстовое сравнение | |
|
|
|
|
|
|
|
для: DIM@
(09.04.2008 в 17:07)
| | Жаль что нет вариантов решения :( | |
|
|
|
|
|
|
|
для: 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, '%');
|
| |
|
|
|
|
|
|
|
для: mechanic
(10.04.2008 в 09:26)
| | Да, я уже приблизительно так и сделал.
$sql="UPDATE temp SET temp.rubricatorid=".$row['rubricatorid']." WHERE temp.Name LIKE '%".$row['compareStr']."%'";
|
Спасибо за участие :) | |
|
|
|