• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

Проблема с поиском с @contains

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

seoman2

Green Team
17.02.2010
508
1
В базе есть часть документов с полем СОДЕРЖАНИЕ или с полем СОДЕРЖАНИЕ_

Делаю свой поиск, чтобы искать текст из sСОДЕРЖАНИЕ сразу по обим полям.

formula$ = formula$+{@Contains(@LowerCase(СОДЕРЖАНИЕ):@LowerCase(СОДЕРЖАНИЕ_); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}

Set dc = db.Search(formula$,Nothing,0)

Результат 0 доков.
 
сделай предварительно
print formula$
чтобы увидеть что ты в итоге получил :)
 
formula$ = formula$+{@Contains(@LowerCase(СОДЕРЖАНИЕ):@LowerCase(СОДЕРЖАНИЕ_); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}
Если formula$ - корректное логическое выражение и не содержит в конце логического оператора "&", то вряд-ли его конкатенация с чем либо вернет корректное логическое выражение


Добавлено:
надеюсь, поле СОДЕРЖАНИЕ и поле СОДЕРЖАНИЕ_ не рт?
Это было-бы круто... :)
 
Ну так вроде @Text работает на RT поля.

Попробуйте так:

Код:
formula$ = formula$+{@Contains(@LowerCase(@text(СОДЕРЖАНИЕ)):@LowerCase(@text(СОДЕРЖАНИЕ_)); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}
 
@Abstract( [ keywords ] ; size ; beginText ; bodyFields )
 
formula$ = formula$+{@Contains(@LowerCase(СОДЕРЖАНИЕ):@LowerCase(СОДЕРЖАНИЕ_); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}
Set dc = db.AllDocuments
Call dc.FTSearch(formula$,0)

Итог:
Query is not understandable

А
formula$ = formula$+{@Contains(@LowerCase(@text(СОДЕРЖАНИЕ)):@LowerCase(@text(СОДЕРЖАНИЕ_)); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}

возвращает пустую коллекцию.
 
Ну дык синтаксис-то другой. Смотри в хелпе. Что-то типа:
formula$ = {[СОДЕРЖАНИЕ] = } + uidoc.FieldGetText("sСОДЕРЖАНИЕ") + { OR } + {[СОДЕРЖАНИЕ_] = } + uidoc.FieldGetText("sСОДЕРЖАНИЕ")

Если ищешь по всем документам, то нет смысла получать коллекцию всех документов. Ищи сразу по базе.
Call db.FTSearch(formula$, 0)
 
Они в хелпе клиента.
Ищи Refining a search query using operators.
 
я эту задачу решал в свое время через утяжеление доков, предварительный агент на сервере вытягивал тест из rt и генерил текстовые поля с содержанием, а затем уже юзер работал через поисковую форму. Документы утяжелялись, зато даже в представлении можно было показать, то что хотел юзер.
 
я эту задачу решал в свое время через утяжеление доков, предварительный агент на сервере вытягивал тест из rt и генерил текстовые поля с содержанием, а затем уже юзер работал через поисковую форму. Документы утяжелялись, зато даже в представлении можно было показать, то что хотел юзер.
С проблемой 32k на Summary поля не сталкивались?
 
Мы в соцсетях:

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