Die Schnittstelle, die eine externe Begriffsegmentiererbibliothek implementieren muss, um Vorgänge zum Segmentieren in Begriffe für Textindizes durchführen zu können.
typedef struct a_word_source { a_sql_uint32 ( SQL_CALLBACK *begin_document )( a_word_source *This , a_sql_uint32 has_prefix ); a_sql_uint32 ( SQL_CALLBACK *get_words )( a_word_source *This , a_term** words ,a_sql_uint32 *num_words ); a_sql_uint32 ( SQL_CALLBACK *end_document )( a_word_source *This ); a_sql_uint32 ( SQL_CALLBACK *fini_all )( a_word_source *This ); a_server_context *_context; // Only one of the following pointers can be valid // in any implementation. // For example: if the producer for this module is // a a_text_source, then only my_text_producer will // be a valid pointer whereas my_word_producer // should be assigned a NULL a_text_source *_my_text_producer; a_word_source *_my_word_producer; // Following members have been reserved for // future use ONLY a_text_source *_my_text_consumer; a_word_source *_my_word_consumer; } a_word_source; |
Mitglied | Typ | Beschreibung |
---|---|---|
begin_document | a_sql_uint32 |
Führt die erforderlichen Konfigurationsschritte für die Verarbeitung eines Dokuments durch. Der Parameter has_prefix ist auf 1 (nicht wahr) oder auf TRUE gesetzt, wenn das in Token übersetzte Dokument ein Präfix-Abfragebegriff ist. Wenn has_prefix auf TRUE gesetzt ist, muss der Begriffsegmentierer mindestens einen Begriff (möglicherweise leer) zurückgeben. has_prefix kann nur die Werte 1 (nicht wahr) oder TRUE haben, wenn der Zweck der Pipeline-Initialisierung TERM_BREAKER_FOR_QUERY ist. Das Ergebnis einer Präfix-Tokenisierung wird als eine Phrase behandelt, wobei der letzte Begriff der Phrase die tatsächliche Präfix-Zeichenfolge ist. |
get_words | a_sql_uint32 |
Gibt einen Zeiger auf ein Array von a_term-Strukturen zurück. Diese Methode wird so lange in einer Schleife für ein bestimmtes Dokument aufgerufen, bis alle Inhalte des Dokuments in Begriffe segmentiert worden sind. Der Datenbankserver erwartet, dass zwei unmittelbar aufeinander folgende Begriffe in einem Dokument Positionen haben, die sich um 1 unterscheiden. Wenn der Begriffsegmentierer seine eigene Stopplistenverarbeitung ausführt, ist es möglich, dass die Differenz zwischen zwei aufeinander folgenden Begriffen größer als 1 ist; dies ist zu erwarten und zulässig. In anderen Fällen jedoch, bei denen Zahlen nicht aufeinander folgen und die Positionen sich um 1 unterscheiden, können die willkürlichen Positionen sich darauf auswirken, wie Volltextabfragen ausgeführt werden, und können zu unerwarteten Ergebnissen für nachfolgende Volltextabfragen führen. |
end_document | a_sql_uint32 |
Markiert den Abschluss der Verarbeitung des Dokuments durch die Pipeline und führt eine dokumentspezifische Bereinigung durch. |
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 * |
Der der Eintrittspunktfunktion innerhalb der a_init_term_breaker-Struktur bereitgestellte Datenbankserverkontext. Das Begriffsegmentierermodul verwendet diesen Kontext zur Einrichtung einer direkten Kommunikation mit dem Datenbankserver. |
_my_text_producer | a_text_source * |
Ein Zeiger auf den a_text_source-Producer von dem Begriffsegmentierer, der der Eintrittspunktfunktion innerhalb der a_init_term_breaker-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 Begriffsegmentierer 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_word_source-Schnittstelle ist in der Header-Datei exttbapiv1.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 |