Последний параметр метода Search не работает?

Тема в разделе "Lotus - Программирование", создана пользователем IsAvailable, 12 июл 2010.

  1. IsAvailable

    IsAvailable Гость

    Неожиданно столкнулся вот с какой проблемой: получаю коллекцию методом Search, указываю последний параметр, скажем = 10, получаю коллекцию из 10 документов, но когда иду по этой коллекции, то там ВСЕ документы, удовлетворяющие условию!!!

    Код (LotusScript):
    Set coll = fdb.Search({<условие>, Nothing, 10)
    Print "alldocs: " & Cstr(coll.Count)
    ' выводит "alldocs: 10"
    Set fdoc = coll.GetFirstDocument
    i = 0
    While Not(fdoc Is Nothing)
    i = i + 1
    Print "iteration # " & Cstr(i)
    Call ws.CurrentDocument.FieldAppendText("<имя поля>", "<строка со значениями из fdoc>")
    Set fdoc = coll.GetNextDocument(fdoc)
    Wend
    ' выводит пока не забьется поле на 32К или пока не закончатся все документы, удовлетворяющие <условию>
    Может просто понедельничный тупняк у меня? ) Может, знает кто, в чем тут дело?
    В хэлпе написано четко, ясно, без примечаний - последний параметр - число документов, которое я хочу получить в коллекцию:
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    муж мой вроде сталкивался с похожей траблой. глюка?
     
  3. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Ага. Редкий случай, когда хэлп врет.
    Последний параметр db.search - не работает. collection.count кажет правильное значение, но реально в коллекции есть все документы. И трафик от сервера, и время поиска - все будет одинаково. Т.е. параметр ни на что не влияет, и даже вреден, ибо вводит в заблуждение.
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    так надо айбиэмцам сказать, пусть правят, что ж они так народ в заблуждение вводят :)
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    они в курсе: http://www-01.ibm.com/support/docview.wss?uid=swg21094421
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    класс, так эта багофича еще с древних времен :)
     
  7. IsAvailable

    IsAvailable Гость

    Ясно, ИБМ в своем стиле :)
    Спасибо всем откликнувшимся : )

    PS В натуре, надо им в саппорт написать...
     
  8. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    лучше вообще от подобного сеча уйта
    я тут недавно вообще с ним чуть не убился
    если запустить один агент с сечем то будет 5 секунд на такой сеачь
    а вот если 4е агента одновременно то будет по 10 минут каждому на сеачь,
    в общем на последних версиях домино сеарч єто убийца...
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ToxaRat
    А чем заменить?
    FTSearch'ем?
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Одну задачу Антон может выполнять 5 мин. А две одновременно - 10 минут. Сходства не находишь? :)

    Либо поиском по виду. Других вариантов и нед.
    С ФТ-поиском, кстати, свои баги. Типа форматы дат и т.п.
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Akupaka
    разницу между 5 секундами и 10 минутами чувствуешь?

    Omh
    сам сейчас в просрации, заменить нечем, лупить кучу видов не выход
    очень надеюсь что это глюк 8.5.1фп3
    иначе придется читать заново про нсф_поол и т.д. что-то подсказывает что несколько сечей да еще и по разным базам требует некую монопольность по диску...
     
  12. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Этот последний параметр и нафиг не нужен.
    Во-1, где такое может использоваться? Какая область применения?
    Во-2, всё равно будешь делать цикл, вот там можно и выйти, если счётчик больше необходимого.
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Опытным путем определено, что автоматический агент может обработать не более десяти докУментов за запуск.
    При оптимизированом поиске по БД, нет смысла обрабатывать (поиском) все документы БД (например, тыщу), если нужный десяток уже определен (например, еще в первой сотне).
     
  14. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Что такое "автоматический агент"? Первый раз такое слышу...

    А как можно быть уверенным, что "нужный десяток уже в первой сотне"? ;)
    При оптимизированном поиске или вьюхи правильно отстраиваются или формулы поиска для Search правильно пишутся, чтобы не отбирались лишние документы...
     
  15. IsAvailable

    IsAvailable Гость

    VladSh
    Не нужно быть столь категоричным. Я вот тоже за несколько лет программирования в Lotus захотел воспользоваться этим параметром лишь в первый раз. Но это еще ни о чем не говорит.
    На самом деле довольно полезный параметр, когда параметры поиска динамические и заранее не определены (например, вводятся пользователем), а данные нужно отображать в поле (у которого, как известно, лимит в 32кб данных)
    Безусловно, проблема эта решается циклом и доп.переменными, но дело-то не в этом. Дело в том, что имеющийся функционал не работает так, как должен работать (а уж для чего он может пригодиться - это дело десятое)

    Akupaka
    В смысле? Шедульный агент не может обработать больше 10 документов?! Что за ересь? % ))) Или я что-то не так понял? )))
     
  16. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    может, у него такая сложная обработка и таймаут для агентов. А вообще, плз, поясни, Akupaka, что это было, на базе чего был получен такой опыт.
     
  17. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.020
    Симпатии:
    8
    Search, вроде бы, создает что-то вроде временного вида с указаной формулой отбора. Так что, в некотором смысле, логично, что параметр не работает - в вид-то первые 10 документов не отберешь :)
     
  18. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Но серверу не обязательно отдавать все отобранные документы. Пусть возвращает, сколько затребовали.
     
  19. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Это разве не задача разработчика правильно сформировать фильтр поиска, т.е. составить формулу, чтобы не отбирать лишнее?
    Если данных больше, чем 32кб, это разве не задача разработчика правильно разложить данные?

    Дело в том, что он как раз может не работать из-за того, что не для чего ему пригодиться ))) т.к. атавизм.

    Т.е. нам фактически до фонаря, какие 10 он возвратит из 10-ти тысяч??? И потом мы будет куда-то записывать или изменять эти данные? Да!... вот это логика приложения...

    Этот параметр нужен разве что для сайтов знакомств )))
    а в бизнес-приложениях, хоть у нас это и довольно гибкая платформа, но, думаю, что всё-таки нужны более весомые параметры, чем "отобрать 10 штук нафонарь".
     
  20. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Издеваешсо, да? К примеру, шедульный. Вот кто-то пишет шедульный агент по обработке некоторых документов в базе, и пытается его оптимизировать, чтобы он делал не больше, чем может, чем ему нужно за раз.
    Да нет никакой уверенности. Я говорю для примера. Конечно, десятый док может оказаться последним проверяемым в базе, тогда "оптимизации не вышло" ))
    Влад, ты просил область приминения, я тебе должен был придумать супер сложный пример? ))
    Ты что-то не так...

    Добавлено:
    А мне казалось ты меня плохо знаешь :)
    Почему же? Реляционные БД с этим справляются на ура, а домино как обычно.

    Добавлено:
    Мало того, серверу не обязательно искать ВСЕ документы в базе, чтобы вернуть только 10 затребованных, особенно, если эти десять уже были найдены, например, после проверки лишь 20% всех данных. Влад, есть возражения? ;)

    Добавлено:
    Ой-ей... Большинство задач лотусиста сводится к исправлению глюков платформы, "чтоб работало как надо".

    Добавлено:
    Тебе нужны страусиные яйца? Мне нет. А вот страусу без них никак...

    Добавлено:
    "Да-да! Я знаю! Меня возьми!" (с) Шрек. Реплика Осла.
    А я тебе задачу описал, а ты не вник. Давай еще раз - агент не может обработать за запуск более, к примеру, 10 документов. Зачем ему доставать больше?
    ...
    А даже, если и так? Лотус на столько крут, что программы типа сайта знакомств не его удел?
     
Загрузка...

Поделиться этой страницей