D.4. 国際化されたディレクトリーの検索
検索操作の実行時に、Directory Server は、サーバーがサポートする照合順序を持つ任意の言語に基づいて結果をソートすることができます。ディレクトリーでサポートされている照合順序のリストは、「サポート対象のロケール」を参照してください。
注記
国際化された検索を実行するには、LDAPv3 検索が必要です。したがって、ldapsearch の呼び出しには LDAPv2 オプションを設定しないでください。
本セクションでは、国際的な属性値を返すためのマッチングルールフィルターの使用に焦点を当てています。一般的な ldapsearch 構文の詳細は、「LDAP 検索フィルター」を参照してください。
D.4.1. マッチングルールの形式
国際化された検索のマッチングルールのフィルターは、いくつかの方法で表すことができ、どちらを使用するかは好みの問題です。
- 検索のベースとなるロケールの照合順序の OID として。
- 検索のベースとなる照合順序に関連付けられた言語タグとして。
- 照合順序の OID および関係演算子を表す接尾辞として。
- 照合順序に関連付けられた言語タグと、関係演算子を表す接尾辞として。
これらの各オプションの構文は、以下のセクションで説明されています。
D.4.1.1. マッチングルールでの OID の使用
Directory Server でサポートされる各ロケールには、関連付けられた照合順序 OID があります。Directory Server がサポートする OID の一覧は、
/etc/dirsrv/config/slapd-collations.conf
ファイルを参照してください。
照合順序 OID は、次のように一致規則フィルターの一致規則部分で使用できます。
attr:OID:=(relational_operator value)
リレーショナル演算子は文字列の値の部分に含まれ、値はシングルスペースで区切られます。たとえば、スウェーデン語の照合順序で N4709 時またはそれ以降のすべての
departmentNumber
属性を検索するには、次のフィルターを使用します。
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
D.4.1.2. マッチングルールに言語タグの使用
Directory Server でサポートされる各ロケールには、関連する言語タグがあります。Directory Server でサポートされる言語タグの一覧は、
/etc/dirsrv/config/slapd-collations.conf
ファイルを参照してください。
言語タグは、次のようにマッチングルールフィルターのマッチングルール部分で使用できます。
attr:language-tag:=(relational_operator value)
リレーショナル演算子は文字列の値の部分に含まれ、値はシングルスペースで区切られます。たとえば、スペイン語の照合順序を使用して、estudiante の値を持つすべての説明属性をディレクトリーで検索するには、次のフィルターを使用します。
cn:es:== estudiante
D.4.1.3. マッチングルールでの OID および Suffix の使用
関係演算子と値のペアを使用する代わりに、フィルターのマッチングルール部分の OID に特定の演算子を表す接尾辞を追加します。以下のように OID と接尾辞を統合します。
attr: OID+suffix:=value
注記
この構文は、
mozldap
ユーティリティーでのみサポートされ、ldapsearch などの OpenLDAP ユーティリティーではサポートされません。
たとえば、ドイツ語の照合順序で softwareprodukte 値を持つ
businessCategory
属性を選択するには、次のフィルターを使用します。
businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte
上記の例の .3 は等価接尾辞です。
Directory Server がサポートする OID の一覧は、
/etc/dirsrv/config/slapd-collations.conf
ファイルを参照してください。リレーショナル演算子とそれらの同等の接尾辞の一覧は、表D.2「検索タイプ、演算子、および接尾辞」 を参照してください。
D.4.1.4. 一致するルールに対する言語タグと接尾辞の使用
関係演算子と値のペアを使用する代わりに、フィルターのマッチングルール部分の言語タグに特定の演算子を表す接尾辞を追加します。以下のように、言語タグと接尾辞を組み合わせます。
attr: language-tag+suffix:=value
注記
この構文は、
mozldap
ユーティリティーでのみサポートされ、ldapsearch などの OpenLDAP ユーティリティーではサポートされません。
たとえば、フランス語の照合順序で La Salle の前後に来るすべての名字を検索するには、次のようなフィルターを使用します。
sn:fr.4:=La Salle
Directory Server でサポートされる言語タグの一覧は、
/etc/dirsrv/config/slapd-collations.conf
ファイルを参照してください。リレーショナル演算子とそれらの同等の接尾辞の一覧は、表D.2「検索タイプ、演算子、および接尾辞」 を参照してください。
D.4.2. サポートされる検索タイプ
Directory Server は、以下のタイプの国際検索をサポートします。
- 等号 (=)
- 部分文字列 (*)
- より大きい (>)
- 以上 (>=)
- より小さい (<)
- 以下 (<=)
近似検索、音声検索、存在検索は英語のみ対応しています。
通常の ldapsearch 検索操作と同様に、国際検索は演算子を使用して検索のタイプを定義します。ただし、国際的な検索を行う場合は、検索文字列の値の部分に標準的な演算子 (=、>=、>、<、<=) を使用するか、フィルターのマッチングルールの部分に接尾辞 (ディレクトリー接尾辞と混同しないように) と呼ばれる特殊なタイプの演算子を使用してください。表D.2「検索タイプ、演算子、および接尾辞」 は、各タイプの検索、演算子、および同等の接尾辞をまとめたものです。
検索タイプ | 演算子 | 接尾辞 |
---|---|---|
より小さい | < | .1 |
より小さいか等しい | <= | .2 |
等号 | = | .3 |
より大きいか等しい | >= | .4 |
より大きい | > | .5 |
部分文字列 | * | .6 |
D.4.3. 国際検索の例
以下のセクションでは、ディレクトリーデータで国際検索を実行する方法の例を紹介します。それぞれの例では、マッチングルールのフィルター形式がすべて示されているため、形式に慣れて最適なものを選択することができます。
D.4.3.1. less-than の例
小なり演算子 (<) または接尾辞 (.1) を使用してロケール固有の検索を実行すると、特定の照合順で指定の属性の前に渡されるすべての属性値が検索されます。
たとえば、スペイン語の照合順序で苗字 Marquez の前に来るすべての苗字を検索するには、以下のマッチングルールフィルターのいずれかが有効です。
sn:2.16.840.1.113730.3.3.2.15.1:=< Marquez ... sn:es:=< Marquez ... sn:2.16.840.1.113730.3.3.2.15.1.1:=Marquez ... sn:es.1:=Marquez
D.4.3.2. less-Than または Equal-to の例
小なりまたは等号演算子 (<=) または接尾辞 (.2) を使用してロケール固有の検索を実行すると、特定の照合順で指定の属性またはその前に渡されるすべての属性値が検索されます。
たとえば、ハンガリー語の照合順序で部屋番号 CZ422 に、またはその前にあるすべての部屋番号を検索するには、次のマッチングルールのフィルターのいずれかが機能します。
roomNumber:2.16.840.1.113730.3.3.2.23.1:=<= CZ422 ... roomNumber:hu:=<= CZ422 ... roomNumber:2.16.840.1.113730.3.3.2.23.1.2:=CZ422 ... roomNumber:hu.2:=CZ422
D.4.3.3. 等価性の例
等号演算子 (=) や接尾辞 (.3) を使用してローカル固有の検索を行うと、特定の照合順序で与えられた属性に一致するすべての属性値が検索されます。
たとえば、ドイツ語の照合順序で値 softwareprodukte を持つすべての
businessCategory
属性を検索するには、次のマッチングルールフィルターのいずれかが機能します。
businessCategory:2.16.840.1.113730.3.3.2.7.1:==softwareprodukte ... businessCategory:de:== softwareprodukte ... businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte ... businessCategory:de.3:=softwareprodukte
D.4.3.4. より大きいか等しいの例
大なりまたは等号演算子 (>=) または接尾辞 (.4) を使用してロケール固有の検索を実行すると、特定の照合順で指定の属性またはその後に渡されるすべての属性値が検索されます。
たとえば、フランス語の照合順序で Québec に、またはその後に位置するすべての地域を検索するには、次のようなマッチングルールフィルターが有効です。
locality:2.16.840.1.113730.3.3.2.18.1:=>= Québec ... locality:fr:=>= Québec ... locality:2.16.840.1.113730.3.3.2.18.1.4:=Québec ... locality:fr.4:=Québec
D.4.3.5. より大きいの例
大なり演算子 (>) または接尾辞 (.5) を使用してロケール固有の検索を実行すると、特定の照合順で指定の属性またはその前に渡されるすべての属性値が検索されます。
たとえば、チェコ語の照合順序でホスト schranka4 の後に来るすべてのメールホストを検索するには、次のマッチングルールフィルターのいずれかが機能します。
mailHost:2.16.840.1.113730.3.3.2.5.1:=> schranka4 ... mailHost:cs:=> schranka4 ... mailHost:2.16.840.1.113730.3.3.2.5.1.5:=schranka4 ... mailHost:cs.5:=schranka4
D.4.3.6. 部分文字列の例
国際的な部分文字列検索を実行すると、指定した照合順序の指定のパターンに一致する値がすべて検索されます。
たとえば、中国語の照合順序で ming で終わるすべてのユーザー ID を検索するには、次のマッチングルールフィルターのいずれかを使用します。
uid:2.16.840.1.113730.3.3.2.49.1:=* *ming ... uid:zh:=* *ming ... uid:2.16.840.1.113730.3.3.2.49.1.6:=* *ming .. uid:zh.6:=* *ming
modifiersName
や memberOf
などの DN 値属性を使用する部分文字列検索フィルターは、フィルターに空白文字が 1 つ以上含まれる場合は、エントリーには常に正しく一致しません。
この問題を回避するには、部分文字列ではなくフィルターで DN 全体を使用するか、フィルターの DN 部分文字列が RDN 境界で始まるようにしてください。つまり、DN の type= 部分で始まるようにしてください。たとえば、以下のフィルターは使用しないでください。
(memberOf=*Domain Administrators*)
ただし、以下のいずれかが正常に動作します。
(memberOf=cn=Domain Administrators*) ... (memberOf=cn=Domain Administrators,ou=Groups,dc=example,dc=com)