Полнотекстовый Поиск В Коллекции

Тема в разделе "Lotus - Программирование", создана пользователем imendan, 29 мар 2012.

  1. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Век живи - век учись!
    При обращении к коллекции из представления (например, PickListCollection) существует возможность производить поиск по первым символам. Необходимо организовать функционал, который позволит осуществлять поиск полнотекстовый.
    Например, нажимаем кнопку выбрать товар, выходит список товаров. Нам нужно выбрать товары, где в слове присутствуют "ка": "шКАла", "КАрандаш", "стерКА" и т.д.
    Я так понял через стандартные функции LotusScript'а это невозможно. Подскажите, пож-та, как это сделать? Я даже не имею представления! Какие средства использовать, что гуглить? Может у кого-то есть готовый пример!
    Спасибо заранее!

    Лотус ФОРЭВЭ :)
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    если требуется лайфсерч - такого нет
    можно в java (аплет или окно) или JS (здесь ограничения движка в нотусне м.б., в веб невапрос)
    http://www.google.com/search?q=js+live+search
    dijit.form.ComboBox здесь оно вродить как стандартно
    для java пример http://www.vijaykiran.com/2006/10/10/live-search-for-jtable/
    но мона пошукать аналогично запросу по js
    на LS есть попытки сделать через таймер - но очень угрёбищный вариант :)
     
  3. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    А если открывать в диалоге форму с внедренной личной папкой, полем для ввода текста, в поле ловим нажатие Enter или кнопицу рисуем (FTSearch, результат в папку, обновление папки). А уже при выборе документа из личной папки, запоминаем UNID....
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    susinmn т.е. лепить костыли :) ?
     
  5. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Иногда проще сделать так

    диалогбокс с тремя полями, см картинку

    конпка меняется на искать когда курсор в поле поиска и работает кнопка ввод
     

    Вложения:

    • choice.jpg
      choice.jpg
      Размер файла:
      42,1 КБ
      Просмотров:
      190
  6. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Даже не представляю как это организовать! Исходники есть?
     
  7. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    код вызова такой, разбирайтесь :)
    сделать работающий готовый пример - это не сегодня

    Код (LotusScript):
    Sub setProjectByFind
    On Error GoTo errHandler
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim docSearch As NotesDocument
    Dim docResult As NotesDocument 
    Dim docProject As NotesDocument
    Dim Query As String
    Dim key As String
    Dim item As NotesItem
    Dim i As Long

    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.Document   
    Set db = session.CurrentDatabase
    Set docSearch = db.CreateDocument  
    start: 
    If Not workspace.DialogBox("dlgSearch", True, True, True, False, False,False, "Выбор проекта", docSearch, False, True, False) Then Exit Sub
    If docSearch.Flag(0)="1" And Not docSearch.ViewResult(0)="Результаты поиска" And Not docSearch.ViewResult(0)="По Вашему запросу ничего не найдено" Then
    Set view = db.GetView("project~unid")
    Call view.Refresh
    key = docSearch.ViewResult(0)
    Set docProject = view.GetDocumentByKey(key, True)

    Dim p As New cProject
    Call p.getInfo(docProject)
    Call p.setInfo(doc)
    Call uidoc.Refresh()

    Call uidoc.RefreshHideFormulas
    Exit Sub
    End If
    Query = "([form]=project OR [form]=subProject) AND NOT [d]=1"
    ForAll KeyString In docSearch.KeyString
    Query = Query+" AND [title]=*"  +KeyString+"*"
    End ForAll
    Set collection = db.FTSearch(Query, 300)       
    If collection.Count = 0 Then
    docSearch.Result = "По Вашему запросу ничего не найдено"
    Else
    i = 0      
    Set docResult = collection.GetFirstDocument
    While Not docResult Is Nothing
    If i = 0 Then
    docSearch.Result = docResult.title(0)+"|"+docResult.UNID(0)
    Else
    Set item = docSearch.GetFirstItem("Result")
    item.AppendToTextList(docResult.title(0)+"|"+docResult.UNID(0))
    End If
    i=i+1
    Set docResult = collection.GetNextDocument(docResult)
    Wend
    docSearch.Flag ="1"
    docSearch.ViewResult = StrRight(docSearch.Result(0),"|")
    End If
    GoTo start 
    finally:
    If eh.isError Then MessageBox eh.errorMessage      
    Exit Sub
    errHandler:
    Call eh.getError()
    Resume finally
    End Sub
     
  8. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Народ, я так и не смог разобраться! Еще раз уточню, что это нужно сделать на толстом клиенте. Вообще подобных задач много!
    Народ, подскажите, что надо учить, чтобы графически и функционально улучшить функции Лотус Ноутс! Какие элементы Явы надо
    рассматривать! И вообще, есть еще идеи как реализовать данную задачу по полнотекстному поиску в коллекции на подобии
    PickListCollection?
     
  9. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    IMENDAN
    Есть другая идея. Создавать док из того "справочника", для которого нужен полнотекстовый поиск. Т.е. во вьюхе ищем нужный док по обычному полнотекстовому поиску, становимся на нужный док и по кнопке во вьюхе создаём док с уже подтянутыми полями из выделенного документа.
    А вообще XPages сейчас решает.
     
  10. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Категоризация по типу товара не спасет положение? Чаще всего помогает.
     
  11. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Это был просто пример! Категоризация не пойдет! Там 10000 наименований...
     
  12. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Вот простой пример поиска с папкой. Там одна общая папка внедренная в диалог. Если такой вариант подойдет, смотри в сторону spofu папок наверное. На этом форуме кучу раз обсуждалось во всех вариантах.

    p.s. Кстати, я там в поиске беру доки перебором по вьюшке. Возможно FTSearch лучше подойдет, не знаю не пользовал.
     

    Вложения:

    • FolderSearch.7z
      Размер файла:
      36 КБ
      Просмотров:
      12
Загрузка...

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