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 の使用法 » データの問い合わせと修正 » 全文検索 » 高度:外部単語区切りライブラリと事前フィルターライブラリ

 

外部単語区切りまたは事前フィルターライブラリを使用する理由

SQL Anywhere での全文検索はテキストインデックスを使用して実行されます。テキストインデックスが構築されたカラムの各値は、「ドキュメント」と呼ばれます。テキストインデックスが作成されると、各ドキュメントはテキストインデックスのテキスト設定で指定された、組み込みの単語区切りによって処理され、ドキュメントに含まれている「単語」 (「トークン」とも呼ばれます) およびドキュメント内の単語の位置が確認されます。組み込みの単語区切りは、クエリ文字列のドキュメント (テキストコンポーネント) に対する単語区切りの実行にも使用されます。たとえば、クエリ文字列 'rain or shine' は、OR 演算子で連結された 2 つのドキュメント 'rain' と 'shine 'で構成されています。テキスト設定で指定された組み込みの単語区切りのアルゴリズムは、ストップリストを単語に分割したり、sa_char_terms system システムプロシージャーの入力を単語に分割するのにも使用されます。

アプリケーションのニーズによっても異なりますが、組み込みの GENERIC 単語区切りの一部の動作が望ましくないか、または限定的であったり、NGRAM 単語区切りがアプリケーションのニーズに合っていない場合もあります。たとえば、組み込みの GENERIC 単語区切りでは、言語固有の単語区切りは行われません。カスタムの「単語区切り」を実装する必要があるその他の理由を次に示します。

  • 言語固有の単語区切りがない   単語の構成内容に関する言語ルールは言語ごとに異なります。このため、単語区切りのルールは言語ごとに異なります。組み込みの単語区切りには、言語固有の単語区切りのルールは用意されていません。

  • アポストロフィを含む単語の処理   "they'll" という単語は組み込みの GENERIC 単語区切りによって "they ll" として扱われます。ただし、アポストロフィを単語の一部として扱うカスタムの GENERIC 単語区切りを作成できます。

  • 単語の置き換えがサポートされていない   単語の置き換えを指定することはできません。たとえば、"they'll" という単語をインデックス付けする場合、they および will の 2 つの単語として保存する場合があります。同様に、単語の置き換えを使用すると、大文字と小文字が区別されるデータベースで大文字と小文字を区別しない検索を実行できます。

SQL Anywhere では、外部事前フィルターライブラリを使用して、データに「事前フィルタリング」を実行してからインデックス付けすることもできます。事前フィルタリングでは、インデックス付けするテキスト形式の内容のみをドキュメントから抽出できます。たとえば、XML 値を含むカラムにテキストインデックスを作成するとします。事前フィルターによって、内容にインデックス付けされないように XML タグを除外できます。

SQL Anywhere では、テキストインデックス全体の作成や更新を行うときに、カスタムの事前フィルター、およびサードパーティの事前フィルターや単語区切りライブラリにアクセスするのに使用できる API が提供されています。このことは、外部ライブラリを使用して XML、PDF、Word のようなドキュメントフォーマットを処理したり、内容にインデックスを付ける前に不要な単語と内容を削除できることを意味します。

サンプルの事前フィルターライブラリと単語区切りライブラリを Samples ディレクトリにインクルードしておき、独自のライブラリの作成やサードパーティのライブラリの使用に役立てることができます。データベースサーバーを実行しているシステムに Microsoft Office がインストールされている場合は、Word や Excel などの Office ドキュメント用の IFilter を使用できます。サーバーに Acrobat Reader がインストールされている場合は、PDF IFilter を使用できます。

注意

NGRAM の外部単語区切りはサポートされていません。