エンタープライズ検索 SQL 構文の WHERE 句
クエリで返される結果にあるドキュメントが含まれるかどうかを判別する条件を指定する場合に使用されます。
…WHERE [<group_aliases>] <search_condition>
Remarks
最上位レベルでは、WHERE 句構文には検索する列と検索条件の 2 つの部分があります。
複雑なクエリを単純化するために、1 つ以上の列から成るグループにエイリアスを割り当てることができます。グループ エイリアスの詳細については、「エンタープライズ検索 SQL 構文の WITH -- AS グループ エイリアス述語」を参照してください。
WHERE 句の検索条件部分では、検索の一致条件を指定します。クエリで指定された比較と論理の組み合わせを満たした場合にドキュメントは返されます。検索条件の結果はブール値で、TRUE か FALSE のどちらかになります。結果が TRUE の場合は、ドキュメントが含まれます。結果が FALSE の場合は含まれません。
エンタープライズ検索 クエリで返されるドキュメントには、検索条件に一致する度合いに従ってランク値が割り当てられます。
検索範囲を指定する
WHERE 句で指定される検索条件で、特定の検索範囲からのコンテンツを検索結果に含めるかどうかを指定できます。構文は次のようになります。
…FROM scope() WHERE "scope"=<search scope name>…
次に例を示します。
SELECT title, author, rank FROM scope() WHERE "scope"='All Sites'
検索述語
検索述語は、値に関する何らかの事実を述べる表現です。述語の要件に適合するドキュメントは、述語で指定されたプロパティに適した値を持ちます。
検索条件は論理演算子 AND、OR、または AND NOT の組み合わせを使用した 1 つ以上の述語または検索条件で構成されます。オプションの単項演算子 NOT を使用すると、述語または検索条件の論理値を否定できます。かっこを使用して、論理項をグループ化したり、入れ子にしたりできます。
次の表に、論理演算子の優先順序を示します。
順序 (優先度) |
論理演算子 |
---|---|
1 番目 (最上位) |
NOT |
2 番目 |
AND |
3 番目 (最下位) |
OR |
同じ種類の論理演算子は結合され、計算に特定の順番はありません。たとえば、(A AND B) AND (C AND D) は (B AND C) AND (A AND D) としても論理結果は同じです。
注意
CONTAINS 述語または FREETEXT 述語が WHERE 句内の最初の述語である場合、その述語に単項論理演算子 NOT を適用することはできません。以下に例を示します。
WHERE NOT CONTAINS ('computer')
これは使用できません。
WHERE CONTAINS ('software') AND NOT CONTAINS ('computer')
これは使用できます。
複雑なクエリで、ある列での一致をその他の列での一致よりも重要度が高くなるようにすることもできます。たとえば、"software design" について論じているドキュメントを検索する場合、ドキュメント タイトルに検索語が見つかる方が、ドキュメントの本文中にそれぞれの単語が見つかるよりも一致度がより "高い" と見なすことができます。このようなドキュメントのランク付けを反映させるために、SQL では検索条件の重み付けがサポートされています。列の重み付けの詳細については、「エンタープライズ検索 SQL 構文の CONTAINS 述語」および「エンタープライズ検索 SQL 構文の FREETEXT 述語」を参照してください。
エンタープライズ検索 の検索述語は 2 つに分類されます。フルテキスト検索述語では、通常、コンテンツ列、タイトル列、およびその他の列の意味を照合し、言語的一致 (たとえば、別の活用形、語句、近似検索など) がサポートされます。一方、フルテキスト以外の検索述語では、指定された列の値を照合し、特別な言語的処理は一切行われません。ただし、文字ベースのパターン マッチを使用できる場合もあります。
注意
フルテキスト以外の述語で TRUE と評価されたためにクエリからドキュメントが返された場合、そのドキュメントのランク値は 1000 と算出されます。
以下の表で、フルテキストの検索述語とフルテキスト以外の検索述語について説明します。
フルテキスト述語 |
説明 |
---|---|
CONTAINS |
ドキュメント テキスト列 (タイトル列、コンテンツ列など) の用語に関する複雑な検索をサポートします。検索語の活用形の検索、用語の近似性の検査、および論理比較を実行できます。検索語にワイルドカード文字を含めることができます。 |
FREETEXT |
検索語句の意味が一致するドキュメントを検索します。関連する単語や類似する語句が一致し、ランク列はドキュメントが検索語句に一致する度合いに基づいて計算されます。検索語にワイルドカード文字を含めることはできません。 |
フルテキスト以外の述語 |
説明 |
---|---|
LIKE |
列の値をワイルドカードによる単純なパターン マッチを使用して比較します。 |
リテラル値の比較 |
列の値を文字列、日付、タイム スタンプ、数値、その他のリテラル値と比較します。この述語は、等号だけでなく、より大きい、より小さいなど、不等号もサポートします。 |
複数値 (ARRAY) の比較 |
複数値の列は、リテラルの複数値配列と比較されます。 |
NULL |
ドキュメントで定義されていない列の値は、NULL 述語を使用して検出できます。 |
このセクションの内容
エンタープライズ検索 SQL 構文の WITH -- AS グループ エイリアス述語