DISKUSE
ECL 
03.04.2019 16:10

Agent přestal fungovat (1)
18.03.2019 08:28

Načíst krátký text z webu 
17.03.2019 23:32

Indexy mimo DB (1)
19.02.2019 15:46

planovaný agent v mail.box (1)
17.02.2019 15:11

Hint v Link 
17.12.2018 11:08

NoCache a ReCache (1)
17.12.2018 10:54

IBM se zbavilo Domina (1)
12.12.2018 10:26


Š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)