• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Коллекция. 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 точно существуют)
 
UID1 - простое поле TExt, Editable, только скрытое, тип Variant.

В документах, которые пытаюсь найти этот же идентификатор находится в таком же поле только называется оно UID.
 
Кстати, почему бы не использовать NotesView.GetAllDocumentsByKey ?
 
исправил на:
Код:
	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
и заработало) спасибо)
НО ПОЧЕМУУУ????????
Я же только метод поменял... Они разве сильно отличаются....
 
Gor
Ну так методы совершенно разные. У FTSearch есть нюансы навроде типа поля.

Здесь лучше второй параметр исправить на True. Чтобы точное совпадение искал. На всякий случай...
view.GetAllDocumentsByKey(o, False)
 
Не, для таких ситуаций FTSearch в печЪ.
Или search, или GetDocumentByKey.
 
FTSearch юзают для юзерориентированного поиска (аод web тоже): вот юзер хочет найти, где в документах встречалось слово "жэпа".
Тогда да, можно/нужно использовать FTSearch.
А для логики, где надо точно взять документ по UNID'у использование FTSearch противопоказанно :)
 
Morpheus
А я и не прочь, точнее даже "за"!
Я FTSearch вообще не юзал ни разу :)
 
Есть зашла речь об FTSearch, то на будущее.
1) База в которой прозводится поиск FTSearch-eм должна быть проиндексированна
2) Если искать по полю то необходимо записать так:


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

Set collection = db.FTSearch({[UID1] = "} +Cstr(o(0))+{"},0)
 
Я одновремя намаился с ФТсерчем... проблема была с поиском по значениям, которые содержат спецсимволы... весело было

ukr

тока не Cstr(o(0)) а просто о, так как о получили из uidoc.fieldgettext
 
FTSearch форева!
Попробуйте найти слово жэпа в мильоне доков при помоща простого Search! И идите обедать+дневной сон.
А FTSearch выдаст за секунду-две!

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

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

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

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

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