Коллекция. Ftsearch

Gor

Well-known member
07.06.2005
517
1
#1
Всем доброго времени суток!!

Ответ скорее всего на поверхности, но не могу понять в чём дело...

в базе у меня есть доки, в этих доках в поле UID1 идентификаторы.
Пытаюсь получить эти доки в коллекцию с помощью FTSearch

Код:
	o = uidoc.FieldGetText("UID1")
o1 = uidoc.FieldGetText("curRole")

Dim Collection As NotesDocumentCollection

Set collection = db.FTSearch(o,0)

Dim docc As NotesDocument
Set docc = Collection.GetFirstDocument()

While Not(docc Is Nothing)
docc.stmode = "awaiting"
docc.strole = o1

Call docc.Save( True, True )
Set docc = collection.GetNextDocument(docc)
Wend
Коллекция всё время выводится пустая... Почему?
(документы с таким поисковым запросом QUERY точно существуют)
 

Gor

Well-known member
07.06.2005
517
1
#3
UID1 - простое поле TExt, Editable, только скрытое, тип Variant.

В документах, которые пытаюсь найти этот же идентификатор находится в таком же поле только называется оно UID.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Кстати, почему бы не использовать NotesView.GetAllDocumentsByKey ?
 

Gor

Well-known member
07.06.2005
517
1
#5
исправил на:
Код:
	Dim view As NotesView
Set view = db.GetView("VRequest33")

Set collection = view.GetAllDocumentsByKey(o, False)

Dim docc As NotesDocument
Set docc = Collection.GetFirstDocument()

While Not(docc Is Nothing)
docc.stmode = "awaiting"
docc.strole = o1

Call docc.Save( True, True )
Set docc = collection.GetNextDocument(docc)
Wend
и заработало) спасибо)
НО ПОЧЕМУУУ????????
Я же только метод поменял... Они разве сильно отличаются....
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
Gor
Ну так методы совершенно разные. У FTSearch есть нюансы навроде типа поля.

Здесь лучше второй параметр исправить на True. Чтобы точное совпадение искал. На всякий случай...
 

Omh

Lotus team
04.07.2007
2 210
1
#8
Не, для таких ситуаций FTSearch в печЪ.
Или search, или GetDocumentByKey.
 

Omh

Lotus team
04.07.2007
2 210
1
#10
FTSearch юзают для юзерориентированного поиска (аод web тоже): вот юзер хочет найти, где в документах встречалось слово "жэпа".
Тогда да, можно/нужно использовать FTSearch.
А для логики, где надо точно взять документ по UNID'у использование FTSearch противопоказанно :)
 

Omh

Lotus team
04.07.2007
2 210
1
#12
Morpheus
А я и не прочь, точнее даже "за"!
Я FTSearch вообще не юзал ни разу :)
 
U
#13
Есть зашла речь об FTSearch, то на будущее.
1) База в которой прозводится поиск FTSearch-eм должна быть проиндексированна
2) Если искать по полю то необходимо записать так:


Код:
o = uidoc.FieldGetText("UID1")

Set collection = db.FTSearch({[UID1] = "} +Cstr(o(0))+{"},0)
 
S

Sandr

#14
Я одновремя намаился с ФТсерчем... проблема была с поиском по значениям, которые содержат спецсимволы... весело было

ukr

тока не Cstr(o(0)) а просто о, так как о получили из uidoc.fieldgettext
 
A

Alexander (Criz)

#15
FTSearch форева!
Попробуйте найти слово жэпа в мильоне доков при помоща простого Search! И идите обедать+дневной сон.
А FTSearch выдаст за секунду-две!

Хотя конечно разные области применения и у FTSearch, и у Search и у GetDocumentByKey.
 
S

Sandr

#16
FTSearch форева!
Попробуйте найти слово жэпа в мильоне доков при помоща простого Search! И идите обедать+дневной сон.
А FTSearch выдаст за секунду-две!

Хотя конечно разные области применения и у FTSearch, и у Search и у GetDocumentByKey.
Попробуйте найти FTSearch-ом строку
ООО "Н@ша к*мпания!"

и при это не извратнуться...