Die Schnittstelle, die eine externe Vorfilterbibliothek implementieren muss, um Dokumente zum Füllen oder Aktualisieren des Volltextindex vorzufiltern.
typedef struct a_text_source { a_sql_uint32 ( SQL_CALLBACK *begin_document )( a_text_source *This ); a_sql_uint32 ( SQL_CALLBACK *get_next_piece )( a_text_source *This , unsigned char ** buffer , a_sql_uint32* len ); a_sql_uint32 ( SQL_CALLBACK *end_document )( a_text_source *This); a_sql_uint64 ( SQL_CALLBACK *get_document_size )( a_text_source *This ); a_sql_uint32 ( SQL_CALLBACK *fini_all )( a_text_source *This ); a_server_context *_context; // Only one of the following two members can have a valid pointer in a given implementation. // These members point to the current module's producer a_text_source *_my_text_producer; a_word_source *_my_word_source; // Following members have been reserved for // future use ONLY a_text_source *_my_text_consumer; a_word_source *_my_word_consumer; } a_text_source; |
Mitglied | Typ | Beschreibung |
---|---|---|
begin_document | a_sql_uint32 |
Führt die erforderlichen Konfigurationsschritte für die Verarbeitung eines Dokuments durch. Diese Methode gibt bei Erfolg 0 und bei Auftreten eines Fehlers, oder wenn keine weiteren Dokumente zur Verfügung stehen, 1 zurück. |
get_next_piece | a_sql_uint32 |
Gibt ein Fragment des gefilterten Eingabe-Bytestroms und die Länge des Fragments zurück. Diese Methode wird mehrfach für ein bestimmtes Dokument aufgerufen und sollte bei jedem Aufruf den jeweils nächsten Abschnitt des Dokuments zurückgeben, bis alle Eingabedaten für ein Dokument verarbeitet wurden oder ein Fehler auftritt. buffer ist der OUT-Parameter, der durch den Vorfilter gefüllt werden soll, um auf die erzeugten Daten zu zeigen. Der Speicher wird durch den Vorfilter verwaltet. len ist der OUT-Parameter, der die Länge der erzeugen Daten angibt. |
end_document | a_sql_uint32 |
Markiert den Abschluss des Filtervorgangs für das jeweilige Dokument und führt gegebenenfalls eine dokumentspezifische Bereinigung durch. |
get_document_size | a_sql_uint64 |
Gibt die Gesamtlänge des Dokuments (in Byte) zurück, wie es durch den Vorfilter erzeugt wurde. Das Objekt a_text_source muss eine immer aktuelle Zählung der Gesamtzahl der von ihm bisher für das aktuelle Dokument erzeugten Byte bereithalten. |
fini_all | a_sql_uint32 |
Wird durch den Datenbankserver nach der Verarbeitung aller Dokumente und unmittelbar vor dem Abschluss der Pipeline aufgerufen. fini_all führt die abschließenden Bereinigungsschritte durch. |
_context | a_server_context * |
Verwenden Sie dieses Element zum Speichern des Datenbankserverkontexts, der der Eintrittspunktfunktion innerhalb der a_init_prefilter-Struktur bereitgestellt wird. Das Vorfiltermodul verwendet diesen Kontext zur Einrichtung einer direkten Kommunikation mit dem Datenbankserver. |
_my_text_producer | a_text_source * |
Verwenden Sie dieses Element zum Speichern des Zeigers auf den a_text_source-Producer des Vorfilters, der der Eintrittspunktfunktion innerhalb der a_init_prefilter-Struktur bereitgestellt wird. Dieser Zeiger kann, wenn eine Zeichensatzkonvertierung erforderlich ist, durch den Datenbankserver ersetzt werden, nachdem die Eintrittspunktfunktion ausgeführt wurde. Aus diesem Grund kann nur dieser Zeiger auf den Textproducer vom Vorfilter verwendet werden. |
_my_word_producer | a_word_source * |
Ist für eine spätere Verwendung reserviert und sollte mit dem Wert NULL initialisiert werden. |
_my_text_consumer | a_text_source * |
Ist für eine spätere Verwendung reserviert und sollte mit dem Wert NULL initialisiert werden. |
_my_word_consumer | a_word_source * |
Ist für eine spätere Verwendung reserviert und sollte mit dem Wert NULL initialisiert werden. |
Die a_text_source-Schnittstelle ist für Datenstrom-basierte Daten vorgesehen. Die Daten werden vom Producer der Reihe nach abgerufen; jedes Byte kommt nur einmal vor.
Die a_text_source-Schnittstelle ist in der Header-Datei extpfapiv1.h im Unterverzeichnis SDK\Include des SQL Anywhere-Installationsverzeichnisses definiert.
Die externe Bibliothek sollte daher keine Betriebssystem-Synchronisationsbasiselemente über Funktionsaufrufe enthalten.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |