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 では、全文検索の実行時にブール演算子 AND、OR、AND NOT をサポートします。

ブール検索の構文の詳細については、CONTAINS 探索条件を参照してください。

全文検索での AND 演算子の使用

AND 演算子では、AND の両側に指定された単語を両方とも含むローが一致となります。AND 演算子としてアンパサンド (&) を使用することもできます。複数の単語を、間に演算子を入れないで指定した場合、AND を暗黙で指定したことになります。

単語がリストされる順番は重要ではありません。

たとえば、次の文はすべて、MarketingInformation テーブルの Description カラムで fabric という単語と ski で始まる単語を含むローを検索します。

SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'ski* AND fabric' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric & ski*' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'ski* fabric' );
全文検索での OR 演算子の使用

OR 演算子では、OR の両側に指定された検索語のうちの少なくとも 1 つを含むローが一致となります。OR 演算子としてパイプ記号 (|) を使用することもできます。この 2 つは同等です。

単語がリストされる順番は重要ではありません。

たとえば、次の文はいずれも、MarketingInformation テーブルの Description カラムで fabric という単語または ski で始まる単語を含むローを返します。

SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'ski* OR fabric' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric | ski*' );
全文検索での AND NOT 演算子の使用

AND NOT 演算子は、左の引数に一致し、右の引数に一致しない結果を検索します。AND NOT 演算子としてハイフン (-) を使用することもできます。この 2 つは同等です。

たとえば、次の文は同義であり、いずれも fabric という単語を含み、ski で始まる単語は含まないローを返します。

SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric AND NOT ski*' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric -ski*' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric & -ski*' );
異なるブール演算子の組み合わせ

ブール演算子は、クエリ文字列で組み合わせて使用できます。たとえば、次の文は同義であり、いずれも MarketingInformation テーブルの Description カラムで fabricskin を含み、cotton は含まない項目を検索します。

SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'skin fabric -cotton' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric -cotton AND skin' );

次の文は同義であり、いずれも MarketingInformation テーブルの Description カラムで fabric を含むか、または cottonskin の両方を含む項目を検索します。

SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'fabric | cotton AND skin' );
SELECT * 
   FROM MarketingInformation 
   WHERE CONTAINS ( MarketingInformation.Description, 'cotton skin OR fabric' );
単語とフレーズのグループ化

単語と式はカッコを使用してグループ化できます。たとえば、次の文は MarketingInformation テーブルの Description カラムで cotton または fabric を含み、ski で始まる単語を含む項目を検索します。

SELECT ID, Description FROM MarketingInformation
   WHERE CONTAINS( MarketingInformation.Description, '( cotton OR fabric ) AND shi*' );
Description
902 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Tee Shirt</title></head><body lang=EN-US><p><span style='font-size:10.0pt;font-family:Arial'>This simple, sleek, and lightweight technical 「shi」rt is designed for high-intensity workouts in hot and humid weather. The recycled polyester 「fabric」 is gentle on the earth and soft against your skin.</span></p></body></html>
903 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Tee Shirt</title></head><body lang=EN-US><p><span style='font-size:10.0pt;font-family:Arial'>A sporty, casual 「shi」rt made of recycled water bottles. It will serve you equally well on trails or around town. The 「fabric」 has a wicking finish to pull perspiration away from your skin.</span></p></body></html>
906 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Visor</title></head><body lang=EN-US><p><span style='font-size:10.0pt;font-family:Arial'>Lightweight 100% organically grown 「cotton」 construction. 「Shi」elds against sun and precipitation. Metallic ions in the fibers inhibit bacterial growth, and help neutralize odor.</span></p></body></html>
複数カラムに渡る検索

すべてのカラムが同じテキスト・インデックスの一部である場合は、1 つのクエリで複数のカラムに渡る全文検索を実行できます。

SELECT * 
   FROM Products 
      WHERE CONTAINS ( t.c1, t.c2, 'term1|term2' );
SELECT * 
   FROM t 
   WHERE CONTAINS( t.c1, 'term1' ) 
      OR CONTAINS( t.c2, 'term2' );

t1.c1term1 が含まれている、または t1.c2term2 が含まれている場合、1 つ目のクエリは一致します。

t1.c1 または t1.c2 に、term1 または term2 が含まれている場合、2 つ目のクエリは一致します。この方法で contains を使用すると、一致のスコアも返されます。全文検索結果のスコア付けを参照してください。