検索フィルタ

本章では、検索フィルタおよび検索の仕組みを説明しています。

検索フィルタ

検索範囲を限定するために、 [標準検索]フィールドに直接検索フィルタを指定できます。検索に等号記号(=)が含まれる場合は、[標準検索]では値が検索フィルタであるものと想定され、このフィルタが直接使用されて検索が実行されます。

検索フィルタでは、[標準検索]のために戻されるエントリを選択するのに、属性の値が使用されます。例えば、次の検索フィルタでは、Babs Jensenに等しい一般名の検索が指定されます。

検索フィルタの構文

検索フィルタの基本構文:

例:

上記の例では、employeenumberは属性、>= は演算子、100は値です。

異なった属性の組合せを使用するフィルタも定義できます。

フィルタにおける属性の使用

エントリの検索の際に、そのタイプのエントリと関係する属性を指定できます。例えば、ユーザに関するエントリを検索する場合、特定の一般名を持つユーザの検索にcn属性を使用できます。

ユーザに関するエントリの例として次のものが含まれることがあります。

エントリに関係する属性のリストについては、付録A「エントリと属性のフィールド」をご覧ください。 検索フィルタにおいて内部属性名を使用する必要があることに注意してください。

フィルタにおける演算子の使用

演算子で以下のタイプの検索を定義します。

検索タイプ 演算子 説明
等号 = 指定値に一致する属性を含むエントリが戻されます。例:

    cn=Bob Johnson

副文字列 =<文字列>*<文字列> 指定副文字を持つ 列属性を含むエントリが戻されます。例:

    cn=Bob*

    cn=*Johnson

    cn=*John*

    cn=B*John

大なりまたは等価 >= 指定値より大きいか、等しい属性を含むエントリが戻されます。例:

    employeenumber >= 100

小なりまたは等価 <= 指定値より小さいか、等しい属性を含むエントリが戻されます。例:

    employeenumber <= 100

存在 =* 指定属性を含むエントリが戻されます。例:

    cn=*

    telephonenumber=*

    manager=*

近似 ~= 指定値にほぼ等しい指定属性を含むエントリが戻されます。例:

    cn~=surette

    l~=san fransico

これらの検索タイプの詳細は、「検索の仕組み」をご覧ください。

複数の検索フィルタの使用

ブール演算子を使用して、異なった検索フィルタを組み合わせることができます。接頭辞表記に以下の演算子を使用できます。

この場合、ブール_演算子は、任意のブール演算子です。例:

上記の例では、フィルタの組合せによって、組織単位がMarketing (ou=Marketing)で、一般名がRay (cn=Ray*)で始まるエントリが検索されます。And(&)のブール演算子は、この演算子が検索基準を先行する接頭辞表記法で使用されています。

さらに、以下のように、複雑な式を形成するのにブール演算子を入れ子にすることもできます。

ブール演算子

検索フィルタとともに使用できるブール演算子:

演算子 記号 説明
And & 文が真であるためには、すべての指定フィルタが真でなければなりません。例:

    (&(フィルタ1)(フィルタ2)(フィルタ3)...)

エントリが一致するためには、フィルタ1、フィルタ2、およびフィルタ3がすべて真でなければなりません。

Or | 文が真であるためには、最低一つの指定フィルタが真でなければなりません。例:

    (|(フィルタ1)(フィルタ2)(フィルタ3)...)

フィルタ1、フィルタ2、またはフィルタ3の一つでも一致すると、エントリが戻されます。

Not ! 文が真であるためには、指定された文が真であってはなりません。一つのフィルタのみがNot演算子によって影響されることに注意してください。例:

    (!(フィルタ))

フィルタに一致しないエントリが戻されます。

検索フィルタの例

マネージャ属性を含むエントリが次のフィルタによって検索されます。これは存在検索とも呼ばれます。

          manager=*

Ray Kultgenの一般名を含むエントリが次のフィルタによって検索されます。これは等号検索としても呼ばれます。

          cn=Ray Kultgen

Ray Kultgenの一般名を含まないエントリが次のフィルタによって戻されます。

          (!(cn=Ray Kultgen))

X.500の副文字列を持つ[description]属性を含むエントリが次のフィルタによって戻されます。

          description=*X.500*

組織単位がMarketingで、[description]フィールドに副文字列X.500が含まれないエントリが次のフィルタによって戻されます。

          (&(ou=Marketing)(!(description=*X.500*)))

組織単位がMarketingで、マネージャがJulie FulmerまたはCindy Zwaskaであるエントリが次のフィルタによって戻されます。

          (&(ou=Marketing)(|(manager="cn=Julie
Fulmer,ou=Marketing,o=Airius,c=US")(manager="cn=Cindy
Zwaska,ou=Marketing,o=Airius,
c=US")))

ユーザを示さないエントリが次のフィルタによって戻されます。

          (!(objectclass=person))

ユーザ(person)を示さず、しかも一般名(cn)がプリンタ3bに類似したエントリが次のフィルタによって戻されます。

          (&(!(objectclass=person))(cn~=printer3b))

検索の仕組み

注:

Directory Serverインタフェースは、実際、Directory Serverから独立して動作するフォームとCGIプログラムの集まりです。このインタフェースは、Directory Serverに対してLDAPクライアントとして動作するものです。

以下には、Directory Serverを検索する際の仕組みが説明されています。

  1. フォームを送信すると、Directory Serverに検索フィルタが送信されます。
  2. Directory Serverでは、情報がローカル ディレクトリにあるかを確認するため着信した要求がチェックされます。その情報がローカル ディレクトリになく、[Referral]パラメータがサーバーに設定されている場合は、そのクライアントが要求の追求を試みられる他のDirectory ServerのURLが戻されます。
  3. Directory Serverによって、ディレクトリ ツリーからエントリ リストが生成されます。 検索基準に一致するエントリがあるかどうか各候補エントリがチェックされます。一致エントリが検出されるたびに、それがDirectory Serverインタフェースに戻されます。Directory Serverによって該当するエントリがすべてチェックされるか、または以下の限度の一つに達するまで、この過程が継続されます。

ディレクトリ管理者がこれらの設定を構成できます。検索アルゴリズムの詳細は、『Netscape Directory Server管理者用ガイド』をご覧ください。

以下には、近似検索および副文字列検索の仕組みが説明されています。

近似(類似)検索の仕組み

近似検索では入力値に類似した語が検索されます。[拡張検索]インタフェースでは、近似検索はsounds like (類似)検索タイプに対応しています。

例えば、エントリに属性値cn=Robert E Leeが含まれるとします。 近似検索では、Robert Lee、Robert、またはLeeを指定してこのエントリを検索できます。同様に、 San Fransico (l~=San Fransicoのスペル間違いに注意)にほぼ等しい場所の検索では、San Francisco (l=San Francisco)に完全に一致する場所を含むエントリが戻されます。

Directory Serverでは、エントリの各値が一連の語として処理され、各語の表音コードが作成されます。また、近似検索に値を入力すると、その値が一連の表音コードに翻訳されます。以下の場合にエントリが問合せに一致すると見なされます。

例:

ディレクトリにおける名前
(表音コード)
検索文字列
(表音コード)
一致に関する注釈
Alice B Sarette
(ALS B SRT)
Alice Sarette
(ALS SRT)
一致。コードが正しい順序で指定されています。
Alice Sarrette
(ALS SRT)
一致。Saretteのスペルが間違っているにも関わらず、コードが正しい順序で指定されています。
Surette
(SRT)
一致。Saretteのスペルが間違っているにも関わらず、生成されたコードには元の名前が存在します。
Bertha Sarette
(BR0 SRT)
一致なし。コードBR0は元の名前には存在しません。
Sarette, Alice
(SRT ALS)
一致なし、コードが正しい順序で指定されていません。

副文字列検索の仕組み

副文字列検索では、入力した値を含むエントリが検索されます。[拡張検索]インタフェースでは、副文字列検索starts with(開始文字)、contains (含有)、およびends with (終了文字)の検索に対応します。

例えば、

のフォームの検索では、以下の文字列を含む一般名に一致します。

同様に、

の検索では、ディレクトリにおいて555を含む電話番号を持つすべてのエントリが戻されます。