Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/99: Рейтинг темы: голосов - 99, средняя оценка - 4.68
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2011, 16:28
Ответы с готовыми решениями:

Как можно сделать так чтоб программа работала быстрее?
Как можно сделать так чтоб программа работала быстрее?Думаю сделать через seek, чтобы при проверке файла программа проверяла ту позицию, из...

Оптимизация кода, структуры базы, или что еще можно сделать что бы быстрее работало!?
Всем привет! Господа, выручайте. Не пойму как еще оптимизировать... Есть куча связанных таблиц. Нужно выводить статистику используя...

Нужно сделать подзапросы в одной таблице. Как сделать быстрее?
Решил упорядочить статистику 'посетителей'. Вроде бы все просто собираю в таблице атакующий IP - IP_атак атакованный хост - IP_хост ...

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
Цитата Сообщение от Gandliar
Написанный мной алгоритм привязки позиций прайс-листа к товарам на лотус-скрипте работает порядка трех часов на объеме 40 000 товаров и 20 000 позиций прайс-листа.
алгоритм в студию


Цитата Сообщение от Gandliar
Вопрос будет ли работать быстрее если переписать
1. переписать на java агенте в лотусе
нет
СиИАПИ - малоразумный шаг
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
Сейчас работает алгоритм А
1. на первом проходе по позициям прайс-листа определяется производитель
2. Затем список алиасов всех товаров закачивается в память разделенный по производителям
3. Затем для каждой позиции прайса и каждой строки алиасов заданного производителя по каждому слову ищется вхождение в названии+описание
4. Если все ключевые слова присутствуют в название+описание то позиция привязывается и происходит переход к следующей позиции
а ведь можно всё это сделать за один проход....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2011, 12:09
Помогаю со студенческими работами здесь

Как можно быстрее
1) y=a*(x+b)-c 2) y=a-x/b-c :-|:(%-)O_o:handshake: ismagulov, вы нарушаете Правила форума, которые обязались выполнять при...

Как можно быстрее!
Привет всем! У меня возникла проблема. Вылезает вот такая ошибка: &quot;Parse error: syntax error, unexpected '&lt;&lt;' (T_SL)&quot;. Помогите...

StrToInt - можно ли быстрее и компактнее
StrToInt: push ebp xor ebx,ebx xor edi,edi mov ebp,1 mov al,...

Можно ли заставить ЖД работать быстрее?
Подключил я внешний хард ко второму пню, чтобы перегнать туда инфу с компа, но появилась надпись типа винт работает медленно. Перетыкнул на...

Нужна \ как можно быстрее !
Решите пожалуйста задачи наиболее простейшими способами, и пожалуйста прокомментируйте код Пожалуйста присылайте готовый к компиляции код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 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. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru