Метод Notesdatabase.search

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

#1
Добрый день.

Не подскажите есть ли какой нибудь способ ограничить метод Search по времени? чтобы при продолжительном поиске (зависании) он прекращал поиск.

Может есть какие то иные способы реализации этой идеи..

Заранее спасибо за ответы.
 
A

amigolinx

#3
[just joke]
1. ctrl + break
2. killnotes.exe
[/just joke]

А вообще, в тонкости не сильно посвящен, но по превышении определенного таймаута он сам вроде как сваливается - были случаи, когда агент вылетал именно из-за тормозов фт-поиска (нагрузка сервера, не успевал ответить на запрос или что-то в этом роде)
 
G

Guest

#4
А какой метод соответствует ctrl + break? Мне из кода нужно подобное сделать..
 
A

amigolinx

#6
эммм, никакой не соответствует, ибо и "даром не нать"...
попытайтесь зайти с другой стороны, оптимизировав и сузив формулу поиска, cutoff date урежьте, maxdocs пропишите, вобщем как можно сильнее урежьте ему область для зависания, разбив по возможности поиск на куски что ли...
 
G

Guest

#7
поиск делается по ФИО, с указанием любой части этого ФИО. Если долго ищет, то следовательно надо бы конкретизировать запрос. А порой он просто подвисает....

Добавлено:
эммм, никакой не соответствует, ибо и "даром не нать"...
попытайтесь зайти с другой стороны, оптимизировав и сузив формулу поиска, cutoff date урежьте, maxdocs пропишите, вобщем как можно сильнее урежьте ему область для зависания, разбив по возможности поиск на куски что ли...
жаль что не соответствует. Урезать увы не могу, нужно делать поиск по всем данным базы. А поводу зависания, он порой зависает и на элементарных запросах, то что раньше обрабатывал за доли секунды. Почему так, не понимаю..
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#8
-сделать индекс на мультивалюйное поле и не юзать Search
-сделать адресную книгу и пользовать штатный эхиад
 
G

Guest

#9
-сделать индекс на мультивалюйное поле и не юзать Search
-сделать адресную книгу и пользовать штатный эхиад
программа на C#. К лотусу подключаюсь "как есть". Запрос только для подтягивания данных и отображения со своими. Так что индексы построить не в моей компетенции...
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#10
опять костыли...
мда
тогда ответ для вас - НИКАК, либо рвать сессию в глюкавой КОМе
пущайте отдельно тредой и прибивайте её
 
G

Guest

#11
опять костыли...
мда
тогда ответ для вас - НИКАК, либо рвать сессию в глюкавой КОМе
да мне и самому надоели эти костыли, а куда денешься....

можно про "рвать сессию" поподробнее плиз. Искал инфу на эту тему, не нашел..
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#12
ну выж сессию открываете...?
делайте в отдельной нити, на шарпее (я не знаю его синтаксиса и библиотек)
дальше - join (это в джава) нити, по таймауту
как на такое "закрытие" откинется нотусовая КОМа - я не знаю... (возможно стрепит)
 
G

Guest

#13
я пробывал запускать поиск в потоке, и в случае зависания убивать его. однако же Abort() не убивает запущенный поиск. поток переходит в состояние ожидания.

Все равно спасибо, ответ на главный вопрос получен: на Search нельзя поставить тайм-аут, буду искать другие решения.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#14
не понимаю - почему треда не прибивается
но это могут быть корявости шарпея или не Abort надо (или параметры какие)
 
G

Guest

#15
честно говоря сам не понимаю, поток не завершится пока не выполнится Seach. И только когда Seacrh выполнится будет выполнено завершение потока Abort. Соответствено при зависании получается трабл....
 
Статус
Закрыто для дальнейших ответов.