Давайте представим цикл в цикле.

Автор Тема: Давайте представим цикл в цикле.  (Прочитано 10656 раз)

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Давайте представим цикл в цикле.
« : 07 Сентябрь 2009, 15:15:07 »
Есть вид. В нем 2000 документов. Бегу по всем документам и сравниваю их друг с другом. Получается проверка порядка 4.000.000 документов.
Как можно оптимизировать данный процесс?

Например, как-то добавить в коллекцию всё что есть во вьюхе (я не знаю, как это делать без getdocumentbykey в видах), и правильно удалять их из коллекции после прохождения.

В принципе, вопрос сводится к "как взять все док-ты из вьюхи при помощи ЛС без ключей"... В виде 1 столбец, краткое название организации.

И вообще, что быстрее: гетFirstDocument из неиндексированной вьюхи, или из коллекции?
« Последнее редактирование: 07 Сентябрь 2009, 15:18:07 от Sergey_st85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Давайте представим цикл в цикле.
« Ответ #1 : 07 Сентябрь 2009, 15:30:10 »
Можно поподробнее что нужно сделать?

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Re: Давайте представим цикл в цикле.
« Ответ #2 : 07 Сентябрь 2009, 15:41:47 »
Есть ОДИН вид. С ним и работаем.

беру КАЖДЫЙ документ в виде. И сравниваю со ВСЕМИ остальными. Как ускорить процесс в плане цикл побыстрее чтобы работал?

Я не знаю тайминга выполнения ф-ций; может из коллекции док-тов документ берется в 5 раз быстрее, чем из вьюхи.
« Последнее редактирование: 07 Сентябрь 2009, 15:43:28 от Sergey_st85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Давайте представим цикл в цикле.
« Ответ #3 : 07 Сентябрь 2009, 15:47:30 »
Это уже описано в первом сообщении темы.
Я спрашивал про другое: для чего нужны эти переборки. Скорее всего можно решить задачу не проводя подобные сравнения. Для этого и прошу обширнее описать проблему.

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Re: Давайте представим цикл в цикле.
« Ответ #4 : 07 Сентябрь 2009, 15:50:56 »
Код не могу скопировать, но суть такая. Взять имя краткой организации и полной. Исключить из них спец-символы: ООО, ОАО, пробелы, запятые, дефисы и т.д. И сравнивать с другими док-тами, исключая спецсимволы по такому же алгоритму.

+ ещё слова местами меняются для сравнения. ООО Россия два --- это дубль Россия ООО Два.

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Давайте представим цикл в цикле.
« Ответ #5 : 07 Сентябрь 2009, 16:04:07 »
а результатом что должно быть? отчет по организациям, или что-то еще? т.е. для чего сравнения производятся?

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Re: Давайте представим цикл в цикле.
« Ответ #6 : 07 Сентябрь 2009, 16:05:28 »
Просто для CSV-шного отчета, о дублях организаций.

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Давайте представим цикл в цикле.
« Ответ #7 : 07 Сентябрь 2009, 16:23:41 »
А если в документы прописать поле с названием организации без спец.символов и др., в нижнем регистре, например. Затем в виде категоризировать по этому полю. В каждой категории будут содержаться дубли.
« Последнее редактирование: 07 Сентябрь 2009, 16:28:11 от ViV »

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Re: Давайте представим цикл в цикле.
« Ответ #8 : 07 Сентябрь 2009, 17:22:33 »
Тогда "Россия Москва" и "Москва Россия" будут в разных категориях, а это по сути дубль. ПРоблема решена, я просто для агента на сервере отвел лишний час доступного времени.