• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Коллекция. Ftsearch

  • Автор темы Gor
  • Дата начала
G

Gor

Всем доброго времени суток!!

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

в базе у меня есть доки, в этих доках в поле 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 точно существуют)
 
G

Gor

UID1 - простое поле TExt, Editable, только скрытое, тип Variant.

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Кстати, почему бы не использовать NotesView.GetAllDocumentsByKey ?
 
G

Gor

исправил на:
Код:
	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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Gor
Ну так методы совершенно разные. У FTSearch есть нюансы навроде типа поля.

Здесь лучше второй параметр исправить на True. Чтобы точное совпадение искал. На всякий случай...
view.GetAllDocumentsByKey(o, False)
 
O

Omh

Не, для таких ситуаций FTSearch в печЪ.
Или search, или GetDocumentByKey.
 
O

Omh

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

Omh

Morpheus
А я и не прочь, точнее даже "за"!
Я FTSearch вообще не юзал ни разу :)
 
U

ukr

Есть зашла речь об FTSearch, то на будущее.
1) База в которой прозводится поиск FTSearch-eм должна быть проиндексированна
2) Если искать по полю то необходимо записать так:


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

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

Sandr

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

ukr

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

Alexander (Criz)

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

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

Sandr

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

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

Попробуйте найти FTSearch-ом строку
ООО "Н@ша к*мпания!"

и при это не извратнуться...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!