поисковый агент по всем почтовым базам юзверей

  • Автор темы Автор темы deeeman
  • Дата начала Дата начала
подскажите плз, я запускаю агента на вервере (RunOnServer)
агент выполняет FTSearch поиск по почтовой бд В которой ~10 000 доков
пишет ошибку:

Full text operations on database 'mail\***.nsf' which is not full text indexed. This is extremely inefficient.
Full Text message: index of 9942 documents exceeds limit (5000), aborting: Maximum allowable documents exceeded for a temporary full text index
Agent message: Error Notes error: Maximum allowable documents exceeded for a temporary full text index (Слово для поиска) in Agent ... \ at line ...


я попробовал ограничить количество выдаваесых документов 1000,
Код:
Set DC = db1.FTSearch(doc.GetItemValue("World")(0), 1000)

но все равно выдает эту ошибку, в чем дело?
 
а создать фт-индекс не пробовали? есть переменная в нотес.ини, определяющая лимиты для фт-поиска.
дополнительно, для инфы: есть метод FTSearchRange.
 
вставляю такой код перед поиском:

Код:
		If Not db.IsFTIndexed Then
Call db1.CreateFTindex(FTINDEX_ALL_BREAKS + FTINDEX_CASE_SENSITIVE,True)
Elseif db1.LastModified > db1.LastFTIndexed Then
Call db1.UpdateFTIndex( False )
End If


все равно тоже самое....



в нотес.ини на сервере нет таких переменных, если вы про переменные FT_MAX_SEARCH_RESULTS и TEMP_INDEX_MAX_DOC
 
может, не успевает? код создания и апдейта индекса расположен в серверном агенте?
FTSearch:This method returns a maximum of 5,000 documents by default. The Notes.ini variable FT_MAX_SEARCH_RESULTS overrides this limit for indexed databases or databases that are not indexed but that are running in an agent on the client. For a database that is not indexed and is running in an agent on the server, you must set the TEMP_INDEX_MAX_DOC Notes.ini variable as well. The absolute maximum is 2,147,483,647.

Добавлено: что с созданием или апдейтом индекса - хз... вот тут было - https://codeby.net/threads/32785.html?vi...st&p=156098
если нет - значит, либо ставьте значения переменных, либо юзайте FTSearchRange.
 
вышел из ситуации так: создаю заново индекс или обновляю. хоть и тормозит зато работает...

Код:
	options& = FTINDEX_ALL_BREAKS + FTINDEX_CASE_SENSITIVE
If db.IsFTIndexed Then
Call db.UpdateFTIndex( False )
'Messagebox "Database index recreated",, "FT index"
Else
Call db.CreateFTIndex(options&, False)
'Messagebox "New database index created",, "FT index"
End If

........
фтпоиск
работает ))


НО! столкнулся с такой проблемой! Если в почте пришло сообщение(я), и пользователь еще не открывал почтовую базу, то на строке
Код:
If db.IsFTIndexed Then
вываливатеся ошибка:

Agent message: Error Notes error: The full text index needs to be rebuilt (d:\Lotus\Domino\data\mail\***.nsf) in Agent ... \ at line ...

как ее обойти?
 
deeeman
Можно поставить обработчик On Error #### Resume Next, где #### — номер ошибки, или анализировать номер ошибки в общем обработчике if Err = #### Then Resume Next
 
с этим понятно, так и пришлось сделать

вопрос почему возникает такая ошибка и как ее можно кодом лечить?
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab