Поиск документов

Тема в разделе "Lotus - Программирование", создана пользователем KLif, 5 мар 2008.

  1. KLif

    KLif Гость

    Репутация:
    0
    Всем привет.

    Возникла проблема с поиском, попробую описать ситуацию

    1. есть список баз, строка поиска ...

    Сначало в коллекцию попадают доки опр формы, потом по коллекции идёт поиск уже по введённой строке
    Код:
    Dim Db As New NotesDatabase("server", "db")
    s_form = "@Contains(Form;""FormName"")"
    s_search = "string"
    Set coll = Db.Search(s_form,Nothing,0)
    Call coll.FTSearch(s_search,0)
    (код агента)

    Этот код работает для всего списка баз и в конце coll что то содержит ...

    2. тот же список баз, только работа уже в вебе
    Для некоторых баз всё отлично, и в конце есть какой то результат, для остальных агент прекращает работу на строчке Call coll.FTSearch(s_search,0), причём до этого он делает нормально выбор документов по форме + ко всему, поиск по тойже базе но не в вебе даёт нормальный результат и coll содержит несколько документов

    Что может быть не так?
     
  2. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Репутация:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    639
    Симпатии:
    6
    если имя формы FormName, то нужно писатьc одними кавычками
    Код:
    s_form = {@Contains(Form;"FormName")}
     
  3. KLif

    KLif Гость

    Репутация:
    0
    В самом коде всё норм, с этим проблем нет ... отбор доков по форме работает для любой базы из списка ...
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    С правами как дела?
     
  5. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А с какой ошибкой вываливается?
    Или молча?
     
  6. KLif

    KLif Гость

    Репутация:
    0
    Полный доступ ... если агента запускать не в вебе, то для каждой бд из списка он сработает и в конечном итоге coll.Count я получу какое то значение ...
    в вебе он не доходит то строчки Print str(coll.Count)

    Агент запускается в скртый фрейм, в нём написано Agent done ... больше ничего
     
  7. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    KLif
    А гиде эта строчка в вышеприведённом примере?
    Сразу следующая за процитированым куском?

    А базы ft-приндексированы?
    Я ft поиск вообще не юзаю, но может в вебе он отваливаеться от отсутсвия ft-индекса?
     
  8. KLif

    KLif Гость

    Репутация:
    0
    Код:
    Call coll.FTSearch(s_search,0)
    Print str(coll.Count)
    если её запихать выше FTSearch, то принт всегда сработает и выдаст колличество доков которые найдены по форме...

    Я не уверен в индексации каждой БД, но если действительно в вебе из за этого может падать, то шас погляжу ...
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Обработчик ошибок стоит?
     
  10. KLif

    KLif Гость

    Репутация:
    0
    Нашёл ошибку:

     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    KLif
    Похоже, FT-индексы надо создать. :)
     
  12. KLif

    KLif Гость

    Репутация:
    0
    странно ... у меня ни одна база не проиндексированна, и при этом на некоторых работает ftsearch ... или я как то не правильно думаю ...
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Индексы создаются налету. Наверное, свободной памяти везде разное количество.
     
  14. KLif

    KLif Гость

    Репутация:
    0
    А можно создать поиск такого вида : (форма = имя) и (где в доке встречается "строка"), не используя FTSearch?
     
  15. Sandr

    Sandr Гость

    Репутация:
    0
    Если строка не в поле, то нет.
    Альтернатива FTSearchу - notesDatabase.Search - иногда лучше его использовать... особенно если в строке поиска используются спецсимволы - FTSearch с ними очень плохо дружит...
     
  16. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Imho, db.Search - для чёткого поиска
    А FTSearch - пойди туда, не знаю куда, найди то, не знаю что.
    Юзерориентированая штука...
     
  17. KLif

    KLif Гость

    Репутация:
    0
    Вот мне как раз и надо найти доки по введённой строке и она может быть в любом поле ... Search не решение ... да уж, как то туго всё
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поставь ограничение. Например, 500 документов.
     
  19. KLif

    KLif Гость

    Репутация:
    0
    Ему почему то всё равно, хоть 10 доков ... с той же ошибкой вылетает
     
  20. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
Загрузка...

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