|
0 / 0 / 0
Регистрация: 16.11.2008
Сообщений: 308
|
|
Можно ли сделать быстрее?09.02.2011, 16:28. Показов 18464. Ответов 10
Метки нет (Все метки)
Привет!
Есть каталог товаров, есть куча прайс-листов в экселе, которые вкачиваются в лотус. Написанный мной алгоритм привязки позиций прайс-листа к товарам на лотус-скрипте работает порядка трех часов на объеме 40 000 товаров и 20 000 позиций прайс-листа. Позиции прайса выглядят примерно так: Micro Memory Stick M2 4Gb Silicon Power Memory Stick Micro M2 4Gb SanDisk С адаптером для Memory Stick Pro Duo Память Micro Memory Stick M2 8Gb Silicon Power Micro Memory Stick M2 8Gb Silicon Power + 2in1 Card Reader Карта памяти Memory Stick Micro M2 8Gb Sandisk с адаптером Pro Duo То есть привязка идет по ключевым словам к соответствующим товарам. Вопрос будет ли работать быстрее если переписать 1. переписать на java агенте в лотусе 2. переписать на с-api Также буду признателен за идеи по более быстродействующему алгоритму. Заранее благодарю.
0
|
|
| 09.02.2011, 16:28 | |
|
Ответы с готовыми решениями:
10
Как можно сделать так чтоб программа работала быстрее? Оптимизация кода, структуры базы, или что еще можно сделать что бы быстрее работало!? Нужно сделать подзапросы в одной таблице. Как сделать быстрее? |
|
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
|
|
| 09.02.2011, 16:43 | |
|
слишком туманно расписано
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|||
| 09.02.2011, 16:45 | |||
СиИАПИ - малоразумный шаг
0
|
|||
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
|
| 09.02.2011, 16:48 | |
|
Не понятен реальный объем обработки данных...
И общий алгоритм в студию)
0
|
|
|
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
|
|
| 09.02.2011, 17:03 | |
|
Может что полезное найдётся
Сравнить вид в Лотусе и таблицу в Оракле,.
0
|
|
|
0 / 0 / 0
Регистрация: 16.11.2008
Сообщений: 308
|
|
| 09.02.2011, 18:01 | |
|
Переформулирую понятней
Есть 30 и более поставщиков, у каждого свой прайс на товары (в экселе). У меня есть база товаров, необходимо к каждому товару привязать позиции из прайсов поставщиков, если таковые найдутся. Таким образом в результате я получу информацию 1. есть ли товар в продаже 2. у кого из поставщиков я могу его купить и по какой цене Таким образом задача - привязать позиции прайс-листа к правильным товарам. товар поставщик1, цена, условия поставщик2, цена2, условия2 поставщик8, цена8, условия8 В позиции прайс листа обычно есть следующие поля: 1.название 2.описание иногда 3. производитель Проблема заключается в том, что поставщика невозможно убедить в файле всегда обозначить марку и модель товара или уникальный сн номер, поэтому приходится работать с тем что есть. Поэтому мною был придуман следующий алгоритм: Для каждого товара сделано многозначное поле Алиасы в каждой строке которого заданы ключевые слова. Сейчас работает алгоритм А 1. на первом проходе по позициям прайс-листа определяется производитель 2. Затем список алиасов всех товаров закачивается в память разделенный по производителям 3. Затем для каждой позиции прайса и каждой строки алиасов заданного производителя по каждому слову ищется вхождение в названии+описание 4. Если все ключевые слова присутствуют в название+описание то позиция привязывается и происходит переход к следующей позиции Работает крайне долго на 40 000 товаров и 20 000 позиций прайса, часами, хотелось бы ускорить. Сейчас зародилась идея сделать немного по-другому, алгоритм Б Прежде чем напишу его, прошу посоветовать свои варианты, чтобы не циклить на существующих. Заранее благодарю
0
|
|
|
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
|
|
| 09.02.2011, 18:09 | |
|
Каким образом берете данные из екселя? ActiveX?
Каким образом ищете соответствие в лотусе? По вьюшке, db.search, или еще как? В любом случае у меня есть ощущение что время можно сократить минут до 15-30. Проход должен быть только 1.
0
|
|
|
Tyo
|
|
| 09.02.2011, 18:31 | |
|
Попробуй не товар искать для позиции, а позицию для товара. Т.е. берёшь очередной товар, берёшь ключевые слова для данного производителя. По первому ключевому слову ищешь позицию (только не перебором строк, а штатным поиском, с максимально точными критериями, кажется метод Find) далее проверяешь в этой позиции наличие остальных ключевых слов. Не нашёл -- Find дальше.
Другой подход: Закачать все прайсы во временную БД. Построить FT-индекс. Для поиска позиций для товара использовать FT-запрос, включающий производителя и все ключевые слова. |
|
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 09.02.2011, 19:57 | |
|
хехель конвертить в CSV (сделать предпроцессор), иначе - прощай перформанс...
либо как предложил TIA - качнуть в БД (и не факт - что нотуса) поиск по ключам - там нужно точно понять как организовать их возможно, разбор "дерьма", от "поставщиков", вынести в предпроцессор, где мэтчить в полуавтоматическом режиме
0
|
|
|
0 / 0 / 0
Регистрация: 16.11.2008
Сообщений: 308
|
|
| 09.02.2011, 21:40 | |
|
Прайс-листы закачиваются в лотусовую бд.
Проход от товара согласен, будет правильнее, так как в любом случае надо проходить все товары. Попробовал локально с фтсеарчем по виду, работает гораздо быстрее. Видимо это будет самый быстрый метод. У меня было заблуждение, что при обновлении фт индекса метод просто дает команду на обновление, но не ждет завершения операции обновления, а реально он ждет и отрабатывается правильно <_< по крайней мере на локале, надеюсь на сервере тоже. Интересно, влияет ли порядок ключевых слов на итоговую скорость поиска. типа [Description] contains (samsung and syncmaster and t220) [Description] contains (t220 and syncmaster and samsung) если позиций содержащих слово "samsung" 3000 а позиций содержащих слово "t220" всего 3 Всем спасибо за советы! Завтра реализую.
0
|
|
|
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
|
||
| 10.02.2011, 12:09 | ||
0
|
||
| 10.02.2011, 12:09 | |
|
Помогаю со студенческими работами здесь
11
Как можно быстрее Как можно быстрее! StrToInt - можно ли быстрее и компактнее Можно ли заставить ЖД работать быстрее?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|