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 の使用法 » データのクエリと変更 » データのクエリ » 全文検索のタイプ

 

プレフィクス検索

全文検索では、単語の先頭部分を検索できる機能があります。これは「プレフィクス検索」と呼ばれます。プレフィクス検索を実行するには、検索するプレフィクスを指定した後に、アスタリスクを付けます。これは「プレフィクス単語」と呼ばれます。

CONTAINS 句のキーワードは、フレーズに含まれていないかぎり、プレフィクス検索では使用できません。CONTAINS キーワードのリストについては、CONTAINS 探索条件を参照してください。

クエリ文字列に複数のプレフィクス単語 (フレーズ内のプレフィクス単語も含む) を指定することもできます (たとえば、'"shi* fab"' など)。

プレフィクス検索の構文に関する完全な制約事項については、アスタリスク (*) を使用できる構文を参照してください。

次の例は、MarketingInformation テーブルを問い合わせて、プレフィクス shi で始まる項目を検索します。

SELECT ID, ct.score, Description
   FROM MarketingInformation CONTAINS ( MarketingInformation.Description, 'shi*' ) AS ct
   ORDER BY ct.score DESC;
ID score Description
906 2.295363835537917 <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>
901 1.6883275743936228 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Tee 「Shi」rt</title></head><body lang=EN-US><p><span style='font-size:10.0pt;font-family:Arial'>We've improved the design of this perennial favorite. A sleek and technical 「shi」rt built for the trail, track, or sidewalk. UPF rating of 50+.</span></p></body></html>
903 1.6336529491832605 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Tee 「Shi」rt</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>
902 1.6181703448678983 <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Tee 「Shi」rt</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>

テキスト・インデックスで shield という単語が出現する頻度は shirt よりも低いため、ID 906 のスコアが最も高くなります。

GENERIC テキスト・インデックスへのプレフィクス検索

GENERIC テキスト・インデックスでは、プレフィクス検索は次のように動作します。

  • プレフィクス単語が MAXIMUM TERM LENGTH よりも長い場合、MAXIMUM TERM LENGTH よりも長い単語はテキスト・インデックスには存在できないため、クエリ文字列から削除されます。したがって、MAXIMUM TERM LENGTH が 3 のテキスト・インデックスで 'red appl*' を検索することは、'red' を検索することと同義になります。

  • プレフィクス単語が MINIMUM TERM LENGTH よりも短く、フレーズ検索の一部でもない場合、プレフィクス検索は通常通り処理されます。したがって、MINIMUM TERM LENGTH が 5 の GENERIC テキスト・インデックスで、'macintosh a*' を検索すると、macintosh と a で始まる 5 文字以上の任意の単語を含むインデックス付けされたローが返されます。

  • プレフィクス単語が MINIMUM TERM LENGTH よりも短いものの、フレーズ検索の一部になっている場合は、プレフィクス単語はクエリから削除されます。したがって、MINIMUM TERM LENGTH が 5 の GENERIC テキスト・インデックスで、'"macintosh appl* turnover"' を検索することは、「macintosh 任意の単語 turnover」を検索することと同義になります。"macintosh turnover" を含むローは検索されません。macintosh と turnover の間に単語が必要になります。

NGRAM テキスト・インデックスへのプレフィクス検索

NGRAM テキスト・インデックスの場合、NGRAM テキスト・インデックスには N-gram しか含まれておらず、単語の先頭に関する情報は含まれていないため、プレフィクス検索を実行すると予期しない結果が返される可能性があります。また、クエリ単語は N-gram に分割され、検索はクエリ単語ではなく N-gram を使用して実行されます。そのため、次のような動作に注意する必要があります。

  • プレフィクス単語が N-gram の長さ (MAXIMUM TERM LENGTH) よりも短い場合、クエリはそのプレフィクス単語で始まる N-gram を含むすべてのインデックス付けされたローを返します。たとえば、3-gram のテキスト・インデックスの場合、'ea*' を検索すると、ea で始まる N-gram を含むすべてのインデックス付けされたローが返されます。したがって、weather と fear という単語がインデックス付けされている場合、これらの N-gram にはそれぞれ eat と ear が含まれているため、ローは一致すると見なされます。

  • プレフィクス単語が N-gram の長さよりも長く、フレーズの一部ではなく、近接検索の引数ではない場合、プレフィクス単語は N-gram フレーズに変換され、アスタリスクは削除されます。たとえば、3-gram のテキスト・インデックスの場合、'purple blac*' を検索することは、'"pur urp rpl ple" AND "bla lac"' を検索することと同義になります。

  • フレーズの場合は、次のような動作も発生します。

    • フレーズ内にプレフィクス単語以外の単語がない場合、そのプレフィクス単語は N-gram フレーズに変換され、アスタリスクは削除されます。たとえば、3-gram のテキスト・インデックスの場合、'"purpl*"' を検索することは、'"pur urp rpl"' を検索することと同義になります。

    • プレフィクス単語がフレーズの末尾に位置する場合は、アスタリスクは削除され、すべての単語は N-gram のフレーズに変換されます。たとえば、3-gram のテキスト・インデックスの場合、'"purple blac*"' を検索することは、'"pur urp rpl ple bla lac"' を検索することと同義になります。

    • プレフィクス単語がフレーズの末尾に位置していない場合、フレーズは複数のフレーズに分割され、AND で結合されます。たとえば、3-gram のテキスト・インデックスの場合、'"purp* blac*"' を検索することは、'"pur urp" AND "bla lac"' を検索することと同義になります。

  • プレフィクス単語が近接検索の引数の場合、近接検索は AND に変換されます。たとえば、3-gram のテキスト・インデックスの場合、'red NEAR[1] appl*' を検索することは、'red AND "app ppl"' を検索することと同義になります。

参照