PrepareTextForFTSSearch()
PrepareTextForFTSSearch() – Optimiert einen Suchtext für die Suche anhand eines FTS-Index
Diese Funktion optimiert einen übergebenen Text für eine Volltextsuche (Full-Text-Search = FTS). Dabei werden die Einzelnen Suchbegriffe anhand des für den FTS-Index definierten Trennzeichen getrennt.
Hinweis
Tabulatoren, doppelte Leerzeichen, Zeilenumbrüche, ignorierte Wörter (Noise-Words) und Format-Tags werden entfernt
als Basis dient die FTS-Index-Definition des übergebenen Feldes (s. Datenbank-Verwaltung / Indexdefinitionen) oder der mit cFTSIndexName vorgegebene FTS-Index
Parameter | Beschreibung |
---|---|
nWorkArea:N | Workarea der Tabelle oder Null, falls ein Feld-Objekt übergeben wird |
uFieldName:U | Feldname oder Feld-Objekt (Workarea = 0) |
cText:C | Original-Text |
cFTSIndexName:C | Vorgabe für den FTS-Index, dann wird dieser nicht anhand des Feld-Namens ermittelt |
lLeadingWildcard:L | Platzhalter * am Anfang jedes Suchbegriffes anhängen |
lTrailingWildcard:L | Platzhalter * am Ende jedes Suchbegriffes anhängen |
cOperator:C | Verknüpfungsoperator (AND & OR erlaubt, leer entspricht AND) |
lResultAsContains:L | Rückgabe als ferigen Contains-Ausdruck ( CONTAINS(FELD, 'SUCHE') ) |
Rückgabewert
Alphanumerisch
Beispiel
| oDAB065:DB:='waDAB065, DAB066', oText, cSeachText|
DbLocate('Memo_ID', 17466, , oDAB065),
cSeachText := 'Suche <nach Test* und ABC!?',
oText := PrepareTextForFTSSearch(waDAB065, // Für Tabelle 9 = Memos
'SUCHE', // Für Ziel-Feld "SUCHE"
cSeachText, // Suchtext
'SUCHE_FTS', // FTS-Index
False, // Platzhalter am Anfang
True, // Platzhalter am Ende
'AND', // Verknüpfungsoperator
True), // Rückgabe als CONTAINS
// CONTAINS(SUCHE, 'ABC* AND nach* AND Suche* AND Test* AND und*')
WriteLn(oText),