Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

14.4.3. 複合検索フィルターの使用

複数の検索フィルターコンポーネントは、以下のように接頭辞表記で表現されるブール値演算子を使用して組み合わせることができます。
(Boolean-operator(filter)(filter)(filter)...)
boolean-operator は、表14.2「検索フィルターのブール値演算子」に一覧表示されているブール値演算子の 1 つになります。
たとえば、このフィルターは、指定された値を含まないすべてのエントリーを返します。
(!(cn=Ray Kultgen))
(!(objectClass=person))
当然のことながら、複合検索フィルターは、入れ子にして完成された表現にしたときに最も有効です。
(Boolean-operator(filter)((Boolean-operator(filter)(filter)))
これらの複合フィルタは、他のタイプの検索 (近似、部分文字列、その他の演算子) と組み合わせることで、非常に詳細な結果を得ることができます。たとえば、このフィルターは組織単位が Marketing で、説明フィールドに部分文字列 X.500 が含まれていないすべてのエントリーを返します。
(&(ou=Marketing)(!(description=*X.500*)))
このフィルターは、組織単位が Marketing で、部分文字列 X.500 を持たないエントリーや Julie Fulmer または Cindy Zwaska をマネージャーとして持つエントリーを返すように拡張できます。
(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=Julie Fulmer,ou=Marketing,dc=example,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,dc=example,dc=com)))
このフィルターは、人を表すことなく、共通名が printer3b と似たすべてのエントリーを返します。
(&(!(objectClass=person))(cn~=printer3b))

表14.2 検索フィルターのブール値演算子

演算子 記号 説明
AND & 文が true になるには、指定したフィルターはすべて true である必要があります。例: (&(filter)(filter)(filter)...)
OR | 文が true になるには、少なくとも 1 つのフィルターを true にする必要があります。例: (|(filter)(filter)(filter)...)
NOT ! 文が true になるには、指定の文が true にならないようにする必要があります。NOT 演算子の影響を受けるフィルターは 1 つだけです。例: (!(filter))
ブール値は、以下の順番で評価されます。
  • 一番内側から外側に向かって、親表現が優先されます。
  • 左から右へのすべての式。