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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » データの問い合わせと修正 » 全文検索 » テキスト設定オブジェクトの概念と参照 » テキスト設定オブジェクトの作成または変更時の指定項目

 

TERM BREAKER 句 - 単語区切りアルゴリズムの指定

TERM BREAKER 設定では、文字列を単語に分割するために使用されるアルゴリズムを指定します。単語を格納する GENERIC、または N-gram を格納する NGRAM から選択できます。GENERIC では、組み込みの単語区切りアルゴリズムまたは外部単語区切りを使用できます。

次の表は、TERM BREAKER の値がテキストインデックス処理およびクエリ文字列の処理方法に与える影響を示します。

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

    組み込みのアルゴリズムを使用して GENERIC テキストインデックスを作成すると、英数字以外の文字に挟まれた英数字の文字グループはデータベースサーバーによって単語として処理され、位置が割り当てられます。

    単語区切り外部ライブラリを使用して GENERIC テキストインデックスを作成すると、単語と単語の位置は外部ライブラリによって定義されます。

    単語が単語区切りによって識別されると、単語長の制限値を超える単語やストップリストに含まれる単語は、カウントはされますがテキストインデックスには挿入されません。

  • NGRAM テキストインデックス   「N-gram」とは、長さ n の文字のグループです。n は MAXIMUM TERM LENGTH の値を表します。

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

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

    N-gram の場合、元の単語の位置情報ではなく、N-gram の位置情報が格納されます。

CONTAINS クエリを解析する場合、データベースサーバーはクエリ文字列からキーワードと特殊文字を抽出し、残りの単語に単語区切りアルゴリズムを適用します。たとえば、クエリ文字列が 'ab_cd* AND b*' の場合、* とキーワード AND は抽出され、文字列 ab_cd と b は単語区切りアルゴリズムに渡されて別に解析されます。

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

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

定義されていない場合、TERM BREAKER のデフォルトは、デフォルトのテキスト設定オブジェクトで設定された値になります。デフォルトのテキスト設定オブジェクトで単語区切りが定義されていない場合、内部単語区切りが使用されます。

 参照