DISKUSE
HCL Domino na NAS QNAP (1)
20.02.2024 10:34

Vložení přílohy do dokumentu MS Word (3)
14.02.2024 20:54

Problěmy s diakritikou. (4)
06.02.2024 17:34

AI pomocnici 
15.01.2024 10:16

Export do pdf souboru (1)
12.01.2024 23:11

Agent přestává fungovat (1)
18.11.2023 06:42

RTF - Computed (2)
19.10.2023 13:00

Čtení polí v neuloženém dokumentu 
08.10.2023 17:15


ŠKOLENÍ


REKLAMA


KOMENTÁŘE

Full-text s vlastným dialógom (II)

Vytisknout článek

Prototypová aplikácia SearchBox, v ktorej je nahradené systémové full-text okno vlastným...


V predchádzajúcom článku som popísal používanie alternatívneho vyhľadávacieho okna, dnes idem k podstate: Ako je to vlastne zrealizované?

Pri popise vychádzam z "prototypového zadania", ktoré si budete vedieť určite prispôsobiť.

A. Zadanie
V aplikácii SearchBox sa nachádzajú dokumenty, obsahujúce tri polia: Subject, Categories (Text) a Body (Rich Text). Úlohou je pripraviť používateľovi vyhľadávanie, ktoré:
1. Umožní zadať slová, vyskytujúce sa v ľubovoľnej časti dokumentu
2. Umožní zadať slová, ktoré sa zároveň nesmú nachádzať v ľubovoľnej časti dokumentu
3. Umožní zadať slová, ktoré musia byť zároveň v nadpise dokumentu (pole Subject)
4. Vyhľadané slová musia byť podfarbené (klasickým full-text spôsobom)

B. Design
Zjednodušená verzia Use Case diagramu:





C. Implementácia

1. Tlačítko MySearch v pohľade
- Otvára formulár formSearch (ako dialógové okno bez OK a Cancel)
- Spúšťa agenta SearchBar

2. Formulár formSearch
- Obsahuje polia na definovanie vyhľadávaných kritérií (Keyword-In, Keyword_Out, Subject)
- Obsahuje pole BasicSelection, ktoré transformuje kritériá na full text query:

A:=@If(Keywords_In="";"";"("+@Implode(Keywords_In;" OR ")+")");
B:=@If(Keywords_Out="";"";"("+@Implode("Not("+Keywords_Out +")";" AND ")+")");
C:=@If(Subject="";"";"("+@Implode("[Subject] Contains \""+Subject+"\"";" OR ")+")");
@Implode(@Trim(A:B:C);" AND ")

- Obsahuje tlačítko Vyhľadať, ktoré zrealizuje:

@Command([ViewRefreshFields]);
@Command([EditGotoField];"BasicSelection");
@Command([EditSelectAll]);
@Command([EditCopy]);
@Command([FileCloseWindow])

3. Agent SearchBar
- Zatvorí a otvorí SearchBar v pohľade (vymazanie prípadných predchádzajúcich queries)
- Vloží obsah clipboardu do SearchBar
- Zavolá agenta Enter (imitácia kliknutia na systémové Search tlačítko)

4. Agent Enter
Deklarácia:
Declare Sub keybd_event Lib "user32.dll" (Byval bVk As Integer, Byval bScan As Integer, Byval dwFlags As Integer,Byval dwExtraInfo As Integer)

Inicializácia
keybd_event &hd,0,0,0 ' Stlačenie enteru
keybd_event &hd,0,2,0 ' Uvoľnenie enteru


D. Limity
Až na prvý limit sa ostatné dajú odstrániť:
1. Podpora len pre Win32 prostredie klienta Lotus Notes
2. V kódoch nie sú "Error Handling" sekvencie
3. V pohľade musia byť zobrazené dokumenty pred použitím MySearch
4. Nie je podpora pre aktualizáciu FT indexu pre spustením hľadania
5. Nie je podpora pre "zrušenie" hľadania


E. Prototyp SearchBox.nsf
To najpodstatnejšie nakoniec - download SearchBox.nsf. A nezabudnite si pred otestovaním vytvoriť Full-text index....

Autor: Miroslav Uhlár
Datum: 31.03.2005


Sdílet článek Seznam komentářů
 
Od
Téma
 Datum
bubux
eeeeeee......
17.04.2005 20:42
gerro
full-text search
17.05.2005 12:45

Související články:
» 

Full-text s vlastným dialógom (I)

 (Tipy a triky, 29.03.2005)