int udm_load_ispell_data ( int agent, int var, string val1, string val2, int flag)
udm_load_ispell_data() lädt ISpell-Daten. Gibt TRUE
bei Erfolg, FALSE bei einem Fehler zurück.
agent - Zeiger auf einen Agenten, erhalten nach
einem Aufruf von udm_alloc_agent().
var - Parameter, der die Quelle der ISpell-Daten
angibt. Kann folgende Werte annehmen.
Nachdem diese Funktion aufgerufen wurde, sollte nicht vergessen werden,
mittels udm_free_ispell_data() den durch ISpell belegten
Speicher wieder freizugeben, auch wenn UDM_ISPELL_TYPE_SERVER verwendet
wird.
Der schnellste Modus ist UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT ist
langsamer, und UDM_ISPELL_TYPE_DB ist der langsamste. Dies gilt zumindest
für mnoGoSearch 3.1.10 - 3.1.11, es ist jedoch geplant, den DB-Modus in
zukünftigen Versionen schneller als den TEXT-Modus zu machen.
UDM_ISPELL_TYPE_DB - Gibt an, dass die ISpell-Daten aus einer
SQL-Datenbank gelesen werden sollen. In diesem Fall werden
val1 und val2 ignoriert
und sollten leer gelassen werden. Der Parameter
flag sollte 1 sein.
Anmerkung:
Der Parameter flag gibt an, dass die ISpell-Daten
nach dem Laden sortiert werden sollen, dies ist für ein korrektes
Arbeiten von ISpell nötig. Werden die ISpell-Daten aus Dateien gelesen,
kann es vorkommen, dass mehrere Aufrufe von
udm_load_ispell_data()
vorkommen, was es wenig Effektiv macht, die Daten nach jedem Aufruf zu
sortieren. Der Datenbank-Modus lädt jedoch alle Daten auf einmal, in
diesem Fall sollte der Wert also 1 betragen. Sollte
ein Fehler auftreten, wird FALSE zurückgegeben, Fehler und Fehlercode
sind in diesem Fall über udm_error() und
udm_errno() verfügbar.
Beispiel:
if (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_DB,'','',1)) {
printf("Error #%d: '%s'\n",udm_errno($udm),udm_error($udm));
exit;
}
UDM_ISPELL_TYPE_AFFIX - Gibt an, dass die ISpell-Daten aus einer Datei
geladen werden sollen und initiiert das Laden der Anhangsdaten. In diesem
Fall gibt der Parameter val1 den zweibuchstabigen
Sprachcode an, für den die Anhänge geladen werden sollen,
val2 gibt den Dateipfad an. Wird kein absoluter
Pfad angeben, werden die Dateien nicht in UDM_CONF_DIR, sondern in im zum
aktuellen Pfad relativen gesucht. Kann die Datei nicht geladen werden,
gibt die Funktion FALSE zurück, und eine Fehlermeldung wird ausgegeben.
Die Fehlercodes können nicht über udm_error() oder
udm_errno() ausgelesen werden. Zur Erlärung des
Parameters flag schauen Sie bitte bei
UDM_ISPELL_TYPE_DB nach.
Anmerkung: flag hat nur beim letzten Aufruf den Wert
1.
UDM_ISPELL_TYPE_SPELL - Gibt an, dass die ISpell-Daten aus einer Datei
gelesen werden sollen, und initiiert das Laden des ISpell-Wörterbuches.
In diesem Fall gibt der Parameter val1 den
zweibuchstabigen Sprachcode an, für den die Anhänge geladen werden
sollen, val2 gibt den Dateipfad an. Wird kein
absoluter Pfad angeben, werden die Dateien nicht in UDM_CONF_DIR,
sondern in im zum aktuellen Pfad relativen gesucht. Kann die Datei nicht
geladen werden, gibt die Funktion FALSE zurück, und eine Fehlermeldung
wird ausgegeben. Die Fehlercodes können nicht über
udm_error() oder udm_errno()
ausgelesen werden. Zur Erklärung des Parameters
flag schauen Sie bitte bei
UDM_ISPELL_TYPE_DB nach.
Anmerkung: flag hat nur beim letzten Aufruf den Wert1.
UDM_ISPELL_TYPE_SERVER - schaltet den Spell-Server support ein.
val1 gibt den Host an, auf dem der Spell-Server
läuft.. val2 ist noch ohne Funktion, wird in
Zukunft aber den Port des Spell-Servers angeben.
flag wird nicht benötigt, da die Daten bereits
sortiert im Spell-Server vorliegen.
Der Spell-Server (Spelld) liest die Rechtschreibdaten aus einer
seperaten Konfigurationsdatei (Standardmäßig
/usr/local/mnogosearch/etc/spelld.conf), sortiert sie und speichert sie
im Speicher.
Die Funktion udm_load_ispell_data() in
UDM_ISPELL_TYPE_SERVER lädt eigentlich nicht die ISpell-Daten, sondern
legt nur die Serveradresse fest. Eigentlich wird dieser Server
automatisch von udm_find() benutzt, wenn eine Suche
durchgeführt wird. Sollte ein Fehler auftreten, wird keine Fehlermeldung
ausgegeben, eine ISpell-Konvertierung kann dann jedoch natürlich auch
nicht stattfinden.
Anmerkung:
Diese Funktion ist seit mnoGoSearch 3.1.12 verfügbar.
Beispiel:
if (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) {
printf("Error loading ispell data from server<br>\n");
exit;
}