Forum und email

udm_load_ispell_data

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch:1.0.0)

udm_load_ispell_data — Lade ISpell-Daten

Beschreibung

bool udm_load_ispell_data ( resource $agent , int $var , string $val1 , string $val2 , int $flag )

udm_load_ispell_data() lädt ispell-Daten. Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

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.

    Hinweis: 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.

    Example#1 udm_load_ispell_data() Beispiel

    <?php
    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.

    Example#2 udm_load_ispell_data() Beispiel

    <?php
         
    if ((! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
         exit;
         }
    ?>

    Hinweis: 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.

    <?php
         
    if ((! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
            (! 
    udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
          exit;
          }
    ?>

    Hinweis: 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.

    Hinweis: Diese Funktion ist seit mnoGoSearch 3.1.12 verfügbar.

    Beispiel:
    if (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) {
             echo "Error loading ispell data from server&lt;br&gt;\n";
             exit;
         }