Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
GET TEXT KEYWORDS
|
GET TEXT KEYWORDS ( Text ; arrKeywords {; *} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Text | Text |
![]() |
Originaltext | |||||
arrKeywords | Array Text |
![]() |
Array mit Schlüsselwörtern | |||||
* | Operator |
![]() |
Mit Stern: einmalige Wörter | |||||
Der Befehl GET TEXT KEYWORDS zerteilt alle Parameter Text in einzelne Wörter und erstellt für jedes Wort einen Eintrag im Array arrKeywords.
4D verwendet zum Aufteilen von Text in einzelne Wörter denselben Algorithmus wie zum Erstellen von Volltext-Index. Er basiert auf der ICU Library. Weitere Informationen dazu finden Sie unter folgender Adresse: http://userguide.icu-project.org/boundaryanalysis.
Hinweis: Auf vielfachen Wunsch haben wir für Französisch und Italienisch eine Ausnahme eingeführt: Folgt auf den Apostroph (') ein Vokal oder der Buchstabe "h", gilt er als Worttrenner. Zum Beispiel: die Zeichenketten "L'homme" oder "l'arbre" werden geteilt in "L’"+"homme" und "l'"+"arbre".
Der verwendete Algorithmus variiert je nachdem, ob in den Datenbank-Eigenschaften die Option Nur nicht alphanumerische Zeichen als Schlüsselwörter ansehen markiert ist.
Im Parameter Text übergeben Sie den Originaltext, der in Wörter aufgeteilt werden soll. Bei formatiertem Text werden Stil-Tags ignoriert.
Der Befehl füllt das Text Array arrKeywords mit den aus dem Text entnommenen Wörtern.
Übergeben Sie den optionalen Parameter *, speichert der Befehl jedes unterschiedliche Schlüsselwort nur einmal in arrKeywords. Dieser Parameter ist standardmäßig nicht angegeben, d.h. alle aus dem Text entnommenen Wörter werden im Array gespeichert, selbst wenn sie mehrmals vorkommen.
Dieser Befehl bietet Ihnen einen einfachen Weg, nach Datensätzen mit umfangreichem Text zu suchen, und garantiert, dass dieselben Schlüsselwörter wie in 4D verwendet werden. Nehmen wir beispielsweise den Text "10.000 Hans-Peter BC45". Wird dieser Text in die Schlüsselwörter "10.000" + "Hans" + "Peter" + "BC45" aufgeteilt, enthält das Array 4 Elemente. Dieses Array lässt sich mit dem Operator % leicht per Programmierung durchlaufen, um die Datensätze zu finden, die eins oder mehrere dieser Schlüsselwörter enthalten (siehe Beispiele).
In einem Formular mit einem Suchbereich kann der Benutzer ein oder mehrere Wörter eingeben. Bestätigt er dieses Formular, suchen wir nach Datensätzen, in denen das Datenfeld MyField mindestens eins der vom Benutzer eingegebenen Wörter enthält.
// vSearch ist die Variable des Suchbereichs im Formular
GET TEXT KEYWORDS(vSearch;arrSearch;*)
//* falls der Benutzer das gleiche Wort mehr als einmal eingibt
CREATE SET([MyTable];"Totalfound")
$n:=Size of array(arrSearch)
For($i;1;$n)
QUERY([MyTable];[MyTable]MyField % arrSearch{$i})
CREATE SET(([MyTable];"found")
UNION("Totalfound";"found";"Totalfound")
End for
USE SET("Totalfound")
Im gleichen Formular wie oben suchen wir nach Datensätzen, wo das Feld MyField alle vom Benutzer eingegebenen Wörter enthält.
// vSearch ist die Variable des Suchbereichs im Formular
GET TEXT KEYWORDS(vSearch;arrSearch;*)
$n:=Size of array(arrSearch)
QUERY([MyTable];[MyTable]MyField >=0;*)
// Suche initialisieren = alle Datensätze
For($i;1;$n)
QUERY([MyTable];&;[MyTable]MyField % arrSearch{$i};*)
// Kriterium hinzufügen
End for
QUERY([MyTable]) //search
Wörter in einem Text zählen:
GET TEXT KEYWORDS(vText;arrWords) // Alle Wörter
$n:=Size of array(arrWords)
GET TEXT KEYWORDS(vText;arrWords;*) // verschiedene Wörter
$m:=Size of array(arrWords)
ALERT("Dieser Text enthält "+String($n)+" separate Wörter unter "+String($m))
Produkt: 4D
Thema: String
Nummer:
1141
Erstellt: 4D v13
4D Programmiersprache ( 4D v20 R7)