CONTAINS述語の使用

1856 ワード

CONTAINS述語を使用して、データベース内の特定のフレーズを取得できます.もちろん、このようなクエリはLIKE述語で記述できます.しかし、CONTAINSの多くの形式が提供するテキストクエリー能力はLIKEよりも強い.また,LIKE述語の使用とは異なり,CONTAINS検索は常に大文字と小文字を区別する.
説明大文字と小文字を区別する言語(多くはラテン語に基づいている)については、全文検索クエリは大文字と小文字を区別する方式で実行される.しかし、日本語には音声を表すスペル法が多く、スペル正規化という概念は、kana=区別しないなど、大文字と小文字を区別しないのと似ている.このスペル正規化はサポートされていない.
Northwindデータベース内で検索して、「bean curd」というフレーズを検索したいとします.CONTAINS述語を使用する場合、これは簡単なクエリーです.
USE Northwind 
GO
SELECT Description
FROM Categories
WHERE Description LIKE '%bean curd%'
GO

または、CONTAINSを使用します.
USE Northwind
GO
SELECT Description
FROM Categories
WHERE CONTAINS(Description, ' "bean curd" ')
GO

CONTAINS述語で用いられる関数表現では,1番目のパラメータは取得する列の名前,2番目のパラメータは全文検索条件である.検索条件(この例では「bean curd」)は、1つ以上の条件からなる複雑であり、後述する.
CONTAINS述語は、複雑な構文を使用して文字ベースの列を取得することをサポートします.
  • 1 1つまたは複数の特定の単語および/またはフレーズ(単純な条件).1つの単語は1つ以上の文字で、真ん中にスペースや句読点はありません.有効なフレーズは、スペース付きの複数の単語から構成され、単語の間に句読点があっても句読点がなくてもよい.たとえば、croissantは単語であり、caféau laitはフレーズです.このような単語とフレーズは単純な条件と呼ばれます.
  • 特定の単語の変形(派生条件).たとえば、単語driveの変形を取得します.テーブルの非同業者に単語drive、drives、drove、driving、drivenが含まれている場合、これらはすべて結果セットに含まれます.各単語は単語driveから変形することができるからです.
  • テキスト(接頭辞条件)で始まる単語またはフレーズを指定します.フレーズの場合、各単語は接頭辞とみなされます.たとえば、条件auto tran*はautomatic transmissionおよびautomobile transducerと一致します.
  • 重み付けされた値の単語またはフレーズ(重み付け条件)を使用します.たとえば、他の単語よりも重み付けされた値の高い単語を検索します.これは、ソートされたクエリー結果を返します.
  • 他の単語またはフレーズに近い単語またはフレーズ(隣接条件).たとえば、いくつかの行を検索します.これらの行の単語iceはhockeyに隣接しています.または、ice skatingはice hockeyに隣接しています.
  • CONTAINS述語は、ANDとORを使用して、これらの条件のいくつかを結合できます.たとえば、全文を有効にする同じデータベース列にlatteとNew York-style bagelがあるすべての行を検索します.それだけでなく、AND NOTを使用して条件を逆にすることもできます.例えば、bagel and not cream cheeseです.
    CONTAINSを使用する場合、SQL Serverは検索条件から干渉語を削除することを覚えておいてください.干渉語はa,and,is,theのような語であり,これらの語はしばしば現れるかもしれないが,特定のテキストを検索する際には本当に役に立たない.