Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » データのクエリ » テキスト設定オブジェクト

 

テキスト設定オブジェクトの設定

SQL Anywhere には、非 NCHAR データに使用する default_char、および default_nchar というデフォルトのテキスト設定オブジェクトが 2 つあります。これらの設定の詳細については、デフォルトのテキスト設定オブジェクトを参照してください。

次の表は、テキスト設定オブジェクトの設定、インデックス付けされる対象に与える影響、および全文クエリの解釈方法を説明したものです。テキスト設定オブジェクト、およびテキスト・インデックスや全文検索にテキスト設定オブジェクトが与える影響の例については、テキスト設定オブジェクトの例を参照してください。

  • 単語区切りアルゴリズム (TERM BREAKER)   TERM BREAKER 設定では、文字列を単語に分割するために使用されるアルゴリズムを指定します。単語を格納する GENERIC (デフォルト)、または N-gram を格納する NGRAM から選択できます。「N-gram」とは、長さ n の文字のグループです。n は MAXIMUM TERM LENGTH の値を表します。

    指定する単語区切りにかかわらず、単語がテキスト・インデックスに挿入されると、データベース・サーバは単語の元の位置情報をテキスト・インデックスに記録します。N-gram の場合、元の単語の位置情報ではなく、N-gram の位置情報が格納されます。

    TERM BREAKER のテキスト・インデックスへの影響 TERM BREAKER のクエリ単語への影響

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックス (デフォルト) を作成すると、データベース・サーバは、英数字以外の文字に挟まれた英数字の文字グループを単語として処理します。単語が定義されると、単語長の設定値を超える単語やストップリストに含まれる単語は、カウントはされますがテキスト・インデックスには挿入されません。

    GENERIC テキスト・インデックスは、NGRAM テキスト・インデックスをパフォーマンスで上回ります。ただし、GENERIC テキスト・インデックスではあいまい検索は実行できません。

    NGRAM テキスト・インデックス   NGRAM テキスト・インデックスを作成すると、データベース・サーバは、英数字以外の文字に挟まれた英数字の文字グループをすべて単語として処理します。単語が定義されると、データベース・サーバは単語を N-gram に分割します。その際、n よりも短い単語、およびストップリストに含まれる N-gram は破棄されます。

    たとえば、MAXIMUM TERM LENGTH が 3 の NGRAM テキスト・インデックスでは、'my red table' という文字列はテキスト・インデックスで red tab abl ble という N-gram として表されます。

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスを問い合わせると、クエリ文字列内の単語は、インデックス付けされる場合と同じ方法で処理されます。クエリ単語をテキスト・インデックス内の単語と比較することで、マッチングが実行されます。

    NGRAM テキスト・インデックス   NGRAM テキスト・インデックスを問い合わせると、クエリ文字列内の単語は、インデックス付けされる場合と同じ方法で処理されます。クエリ単語の N-gram をインデックス付けされた単語の N-gram と比較することで、マッチングが実行されます。

  • 単語の最小長の設定 (MINIMUM TERM LENGTH)   MINIMUM TERM LENGTH 設定では、インデックスに挿入される単語、または全文クエリで検索される単語の最小長を文字数で指定します。MINIMUM TERM LENGTH は、NGRAM テキスト・インデックスでは関係ありません。

    MINIMUM TERM LENGTH は、プレフィクス検索に対して特別な影響があります。プレフィクス検索を参照してください。

    MINIMUM TERM LENGTH の値は 0 より大きい値にする必要があります。MAXIMUM TERM LENGTH より大きい値を設定すると、MAXIMUM TERM LENGTH が MINIMUM TERM LENGTH と等しくなるように自動的に調整されます。

    MINIMUM TERM LENGTH のデフォルト値は、デフォルトのテキスト設定オブジェクトで設定された値 (通常は 1) になります。デフォルトのテキスト設定オブジェクトを参照してください。

    MINIMUM TERM LENGTH のテキスト・インデックスへの影響 MINIMUM TERM LENGTH のクエリ単語への影響

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスでは、MINIMUM TERM LENGTH よりも短い単語をテキスト・インデックスに含めることはできません。

    NGRAM テキスト・インデックス   NGRAM テキスト・インデックスでは、この設定は無視されます。

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスを問い合わせる場合、MINIMUM TERM LENGTH よりも短いクエリ単語はテキスト・インデックスには存在できないため、無視されます。

    NGRAM テキスト・インデックス   MINIMUM TERM LENGTH 設定は、NGRAM テキスト・インデックスの全文クエリには影響ありません。

  • 単語の最大長の設定 (MAXIMUM TERM LENGTH)   MAXIMUM TERM LENGTH 設定がどのように使用されるかは、単語区切りアルゴリズムによって異なります。

    MAXIMUM TERM LENGTH の値は 60 以下の値にする必要があります。MINIMUM TERM LENGTH より小さい値を設定すると、MINIMUM TERM LENGTH が MAXIMUM TERM LENGTH と等しくなるように自動的に調整されます。

    MAXIMUM TERM LENGTH のデフォルト値は、デフォルトのテキスト設定オブジェクトで設定された値 (通常は 20) になります。デフォルトのテキスト設定オブジェクトを参照してください。

    MAXIMUM TERM LENGTH のテキスト・インデックスへの影響 MAXIMUM TERM LENGTH のクエリ単語への影響

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスでは、MAXIMUM TERM LENGTH はテキスト・インデックスに挿入される単語の最大長を文字数で指定します。

    NGRAM テキスト・インデックス   NGRAM テキスト・インデックスでは、MAXIMUM TERM LENGTH は単語が分割される N-gram の長さを決定します。MAXIMUM TERM LENGTH の適切な長さの選択は、言語によって異なります。英語の場合の一般的な値は 4 文字または 5 文字で、中国語の場合は 2 文字または 3 文字です。

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスでは、MAXIMUM TERM LENGTH よりも長いクエリ単語はテキスト・インデックスには存在できないため、無視されます。

    NGRAM テキスト・インデックス   NGRAM テキスト・インデックスでは、クエリ単語は長さ n の N-gram に分割されます。n は MAXIMUM TERM LENGTH と同じ値になります。データベース・サーバは N-gram を使用してテキスト・インデックスを検索します。MAXIMUM TERM LENGTH よりも短い単語はテキスト・インデックスの N-gram と一致しないため、無視されます。

  • ストップリストの設定 (STOPLIST)   ストップリスト設定は、インデックス付けしてはならない単語を指定します。

    ストップリスト設定のデフォルト値は、デフォルトのテキスト設定オブジェクトの設定 (通常は空の状態) になります。デフォルトのテキスト設定オブジェクトを参照してください。

    STOPLIST のテキスト・インデックスへの影響 STOPLIST のクエリ単語への影響

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスでは、ストップリストに含まれる単語はテキスト・インデックスに挿入されません。

    NGRAM テキスト・インデックス   GENERIC テキスト・インデックスでは、ストップリストに含まれる単語から構成される N-gram はテキスト・インデックスには含まれません。

    GENERIC テキスト・インデックス   GENERIC テキスト・インデックスでは、ストップリストに含まれるクエリ単語はテキスト・インデックスには存在できないため、無視されます。

    NGRAM テキスト・インデックス   ストップリストに含まれる単語は N-gram に分割され、N-gram はストップリストで使用されます。同様に、クエリ単語も N-gram に分割され、ストップリスト内の N-gram と一致するものはテキスト・インデックスには存在できないため、削除されます。

    単語をストップリストに加えるかどうかは、慎重に検討してください。特に、アポストロフィやダッシュなどの英数字以外の文字を含む単語はストップリストには含めないでください。このような文字は、単語区切りとして機能します。たとえば、you'll という単語 ('you''ll' と指定する) は、you と ll に分割され、2 つの単語としてストップリストに格納されます。その後、'you' または 'they''ll' のような単語を全文検索する際に悪影響となります。

    NGRAM テキスト・インデックスの場合、ストップリストは、実際に指定したストップリストの単語ではなく、N-gram の形式で格納されるため、予期しない結果になる場合があります。たとえば、MAXIMUM TERM LENGTH が 3 の NGRAM テキスト・インデックスの場合、STOPLIST 'there' を指定すると、the her ere の N-gram がストップリストとして格納されます。これは、the、her、ere の N-gram を含むすべての単語に対する問い合せに影響します。

    注意

    文字列リテラルの指定に関連する制約事項は、ストップリストにも該当します。たとえば、アポストロフィはエスケープする必要があります。文字列リテラルのフォーマットの詳細については、文字列リテラルを参照してください。

    Samples ディレクトリには、複数の言語用のストップリストをロードするサンプル・コードが含まれています。これらのサンプル・ストップリストは、GENERIC テキスト・インデックスでのみ使用することをおすすめします。Samples ディレクトリの場所については、サンプル・ディレクトリを参照してください。

参照