全文検索を実行する場合に、複数の単語をブール演算子で区切って指定できます。SQL Anywhere では、全文検索の実行時にブール演算子 AND、OR、AND NOT をサポートします。
ブール検索の構文の詳細については、CONTAINS 探索条件を参照してください。
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 の両側に指定された検索語のうちの少なくとも 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 演算子としてハイフン (-) を使用することもできます。この 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 カラムで fabric と skin を含み、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 を含むか、または cotton と skin の両方を含む項目を検索します。
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.c1 に term1 が含まれている、または t1.c2 に term2 が含まれている場合、1 つ目のクエリは一致します。
t1.c1 または t1.c2 に、term1 または term2 が含まれている場合、2 つ目のクエリは一致します。この方法で contains を使用すると、一致のスコアも返されます。全文検索結果のスコア付けを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |