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

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 19 авг 2011.

  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    В базе есть часть документов с полем СОДЕРЖАНИЕ или с полем СОДЕРЖАНИЕ_

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

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

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

    Результат 0 доков.
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    сделай предварительно
    print formula$
    чтобы увидеть что ты в итоге получил :)
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    надеюсь, поле СОДЕРЖАНИЕ и поле СОДЕРЖАНИЕ_ не рт?
     
  4. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Если formula$ - корректное логическое выражение и не содержит в конце логического оператора "&", то вряд-ли его конкатенация с чем либо вернет корректное логическое выражение


    Добавлено:
    Это было-бы круто... :)
     
  5. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Да, оба поля Rich Text.
    В print formula$ всё корректно.
     
  6. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Справка дизайнера
     
  7. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Чем тогда заменить @Contains ?
     
  8. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    "Лупой" с панели :(
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    db.FTSearch
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ну так вроде @Text работает на RT поля.

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

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    @Abstract( [ keywords ] ; size ; beginText ; bodyFields )
     
  12. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Не уверен, что это хорошая идея - включать в формулу отбора ТЕКСТ rtf-поля.
     
  13. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    formula$ = formula$+{@Contains(@LowerCase(СОДЕРЖАНИЕ):mad:LowerCase(СОДЕРЖАНИЕ_); @LowerCase("} & uidoc.FieldGetText("sСОДЕРЖАНИЕ") & {"))}
    Set dc = db.AllDocuments
    Call dc.FTSearch(formula$,0)

    Итог:
    Query is not understandable

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

    возвращает пустую коллекцию.
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

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

    Если ищешь по всем документам, то нет смысла получать коллекцию всех документов. Ищи сразу по базе.
    Call db.FTSearch(formula$, 0)
     
  15. Darker

    Darker Гость

    @Abstract не работает в формулах запроса
     
  16. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а я и не говорил в формулаз запроса, предварительно в поле а потом уже @contains
     
  17. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    в хелпе нет примера синтаксиса db.FTSearch
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Они в хелпе клиента.
    Ищи Refining a search query using operators.
    Вот.
     
  19. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    я эту задачу решал в свое время через утяжеление доков, предварительный агент на сервере вытягивал тест из rt и генерил текстовые поля с содержанием, а затем уже юзер работал через поисковую форму. Документы утяжелялись, зато даже в представлении можно было показать, то что хотел юзер.
     
  20. Yakov

    Yakov Гость

    С проблемой 32k на Summary поля не сталкивались?
     
Загрузка...

Поделиться этой страницей