外部単語区切りライブラリが、テキストインデックス操作の単語区切りを実行する場合に実装する必要があるインタフェース。
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; a_text_source *_my_text_producer; a_word_source *_my_word_producer; a_text_source *_my_text_consumer; a_word_source *_my_word_consumer; } a_word_source, *p_word_source; |
メンバー | 型 | 説明 |
---|---|---|
begin_document | a_sql_uint32 |
ドキュメントの処理に必要なセットアップ手順を実行します。トークン化されているドキュメントがプレフィクスクエリ単語である場合、パラメータ has_prefix は 1、not true、または TRUE に設定されます。has_prefix が TRUE に設定された場合、単語区切りは少なくとも 1 つの単語 (空の可能性があります) を返す必要があります。 パイプラインの初期化の目的が TERM_BREAKER_FOR_QUERY である場合、has_prefix は 1、not true、または TRUE のみに設定できます。 プレフィクスのトークン化の結果は、フレーズの最後の単語が実際のプレフィクス文字列であるフレーズとして扱われます。 |
get_words | a_sql_uint32 |
a_term 構造体の配列へのポインタを返します。このメソッドは、ドキュメントのすべての内容が単語に分解されるまで、指定されたドキュメントのループで呼び出されます。 データベースサーバでは、ドキュメント内の連続する 2 つの単語の位置の差異が 1 であると予測します。単語区切りが独自のストップリスト処理を実行している場合に、2 つの連続する単語間の差異として 1 より大きい値が返される可能性があります。これは予期される動作で、許容可能です。ただし、位置の差異が 1 で連続していない数値の場合、任意の位置は全文クエリの実行方法に影響を与え、以降の全文クエリに予期しない結果をもたらす可能性があります。 |
end_document | a_sql_uint32 |
パイプラインによるドキュメントの処理の完了を示し、ドキュメント固有のクリーンアップを実行します。 |
fini_all | a_sql_uint32 |
すべてのドキュメントの処理が完了し、パイプラインが閉じられようとしているときにデータベースサーバによって呼び出されます。fini_all では最後のクリーンアップ手順が実行されます。 |
_context | a_server_context * |
a_init_term_breaker 構造体内のエントリポイント関数に提供されたデータベースサーバのコンテキスト。単語区切りモジュールではこのコンテキストを使用してデータベースサーバとの直接通信を確立します。 |
_my_text_producer | a_text_source * |
a_init_term_breaker 構造体内のエントリポイント関数に提供された単語区切りの a_text_source プロシージャへのポインタ。このポインタは、文字セット変換が必要な場合は、エントリポイント関数が実行された後に、データベースサーバによって置き換えられる可能性があります。このため、テキストプロデューサーへのこのポインタのみが単語区切りによって使用されます。 |
_my_word_producer | a_word_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
_my_text_consumer | a_text_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
_my_word_consumer | a_word_source * |
今後の使用のために予約されており、NULL に初期化する必要があります。 |
a_word_source インタフェースは、SQL Anywhere インストールディレクトリの SDK\Include サブフォルダのヘッダファイル exttbapiv1.h によって定義されます。
複数の関数の呼び出しにまたがるオペレーティングシステムの同期プリミティブは、外部ライブラリに保持しないようにしてください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |