TSearch
Razred TSearch je namenjen "Full Text Search" iskanju po bazi, podobno kot deluje iskanje na spletnih iskalnikih (Google,...).
Vsebina
Določanje osnovnih nastavitev iskanja
V kolikor nameravate uporabljati "Full Text Search", je potrebno najprej sistemu povedati, po katerih plasteh in poljih naj se iskanje izvaja ter v kakšni obliki naj se prikazujejo zadetki. Te nastavitve naj se dodajo v nek modul, ki se naloži ob zagonu aplikacije.
// v iskanje dodamo parcele
Search.AddCategory('Katastrske parcele', 'parc', [parcele], 'hint', '')
// določimo način prikazovanja parcel v programu
Search.AddTemplate('parc', 'txt', '[F a], [F b],[F b]')
// določimo način prikazovanja parcel na spletni strani
Search.AddTemplate('parc', 'htm', '[F a]<br>[F b]<br>[F b]')AddCategory
Metoda AddCategory doda novo kategorijo iskanja.
| Method TSearch.AddCategory (Title, Name As String, Layer As TLayer, Fields, SQL As String) | ||
| Title | String | Naslov kategorije, ki se prikaže ob skupini zadetkov te kategorije, |
| Name | String | Ime oz. šifra kategorije, s katerim lahko omejimo iskanje samo na to kategorijo, |
| Layer | TLayer | Podatkovna plast, iz katere se črpajo podatki, |
| Fields | String | Seznam imen polj, ki jih uvrščamo v iskanje (ločena so z vejico), |
| SQL | String | Opcijsko lahko navedemo še pogoj za filtriranje podatkov (če želimo uvrstiti v iskanje samo del podatkov). |
AddTemplate
Metoda AddTemplate doda novo obliko prikaza zadetkov.
| Method TSearch.AddTemplate (Category, Name, Template As String) | ||
| Category | String | Ime kategorije, na katero je vezana predloga, |
| Name | String | Ime oz. šifra predloge, |
| Template | String | Predloga, ki se uporabi za oblikovanje zadetkov, |
Izgradnja in osveževanje indeksa
Sama nastavitev parametrov za "Full Text Search" ni dovolj, naslednji korak je izgradnja indeksa. Ta operacija je pri manjših podatkovnih plasteh skoraj trenutna, pri večjih pa lahko traja tudi nekaj minut.
// na novo izgradi vse tiste indekse, ki so tega potrebni
Search.BuildIndex('', False)
// na novo izgradi indeks za kategorijo parc
Search.BuildIndex('parc', True)BuildIndex
Metoda BuildIndex na novo izgradi indeks za eno ali vse kategorije iskanja.
| Method TSearch.BuildIndex (Category As String, Force As Boolean) | ||
| Category | String | Opcijsko ime kategorije, za katero naj se na novo izgradi index. Če je ta parameter prazen, se na novo izgradijo vse kategorije. |
| Force | Boolean | True, kadar želimo obvezno izgraditi indeks; 'false', kadar želimo izgraditi indeks le po potrebi. |
Iskanje po ključnih besedah
Ko smo določili vse nastavitve iskanja ter izgradili indeks, se lahko lotimo samega iskanja.
Execute
Metoda Execute izvede iskanje po danem besedilu in vrne zadetke pretvorjene v željeno obliko.
| Method TSearch.Execute (Query, Template, Category As String, Hits As Long) As String | ||
| Query | String | Ključne besede, ki jih iščemo. V seznamu zadetkov bodo le tisti zapisi, ki vsebujejo vse podane besede. |
| Template | String | Obvezno ime predloge, ki naj se uporabi za oblikovanje zadetkov, |
| Category | String | Opcijsko ime kategorije, na katero želimo omejiti iskanje, |
| Hits | Long | Največje število zadetkov po kategoriji. Če je ta parameter 0, se izpišejo vsi zadetki, kar pa ni priporočljivo, ker jih je lahko zelo veliko. |
| Result | String | Seznam zadetkov v želeni obliki. |
// izpiše vse najdene parcele
Write(Search.Execute('laško 223/1', 'txt', '', 10))Filter
Metoda Filter izvede iskanje po danem besedilu in vrne zadetke kot seznam filtriranih zapisov. Nato jih lahko odpremo in pregedujemo v maski ali pa izpišemo v poročilu/dokumentu.
| Method TSearch.Filter (Query, Category As String, Hits As Long) As Long | ||
| Query | String | Ključne besede, ki jih iščemo. V seznamu zadetkov bodo le tisti zapisi, ki vsebujejo vse podane besede. |
| Category | String | Obvezno ime kategorije, za katero želimo izvesti iskanje, |
| Hits | Long | Največje število zadetkov po kategoriji. Če je ta parameter 0, se izpišejo vsi zadetki, kar pa ni priporočljivo, ker jih je lahko zelo veliko. |
| Result | Long | Število zadetkov. |
// odpre najdene parcele v maski
If Search.Filter('laško 223/1', 'parc', 10) > 0 Then
[parcele].Form.Open
EndIfSintaksa iskanja
aaa bbb ccc
cat:parc
max:100
pre:ddd
not:eee
Uporaba v spletnih in mobilnih aplikacijah
...
Novo
Metoda AddHeaderFooter .
| Method TSearch.AddHeaderFooter (Template, Header, Footer As String) | ||
| Template | String | . |
| Header | String | . |
| Footer | String | . |
BuildStyle
Lastnost BuildStyle .
| RO Property TSearch.BuildStyle (S As String) As String | ||
| S | String | . |
| Result | String | . |
BuildTemplate
Lastnost BuildTemplate .
| RO Property TSearch.BuildTemplate (S, Category, Fields As String) As String | ||
| S | String | . |
| Category | String | . |
| Fields | String | . |
| Result | String | . |
CategoryLayer
Lastnost CategoryLayer .
| RO Property TSearch.CategoryLayer (Category As String) As TLayer | ||
| Category | String | . |
| Result | TLayer | . |
CategoryNames
Lastnost CategoryNames .
| RO Property TSearch.CategoryNames As String | ||
| Result | String | . |
CategoryTitles
Lastnost CategoryTitles .
| RO Property TSearch.CategoryTitles As String | ||
| Result | String | . |
Clear
Metoda Clear .
| Method TSearch.Clear |
Debug
Lastnost Debug .
| Property TSearch.Debug As Boolean | ||
| Result | Boolean | . |
FormAll
Metoda FormAll .
| Method TSearch.FormAll (Category, Query As String) | ||
| Category | String | . |
| Query | String | . |
FormOne
Metoda FormOne .
| Method TSearch.FormOne (Category As String, Ptr As Long) | ||
| Category | String | . |
| Ptr | Long | . |
ShowAll
Metoda ShowAll .
| Method TSearch.ShowAll (Category, Query As String) | ||
| Category | String | . |
| Query | String | . |
ShowOne
Metoda ShowOne .
| Method TSearch.ShowOne (Category As String, Y1, X1, Y2, X2 As Float) | ||
| Category | String | . |
| Y1 | Float | . |
| X1 | Float | . |
| Y2 | Float | . |
| X2 | Float | . |