D.4. 搜索国际目录
执行搜索操作时,目录服务器可以根据服务器具有支持性顺序的任何语言对结果进行排序。有关目录支持的排序列表,请参阅 第 D.2 节 “支持的区域设置”。
注意
执行国际化搜索需要 LDAPv3 搜索。因此,不要对 ldapsearch 的调用设置 LDAPv2 选项。
本节重点介绍使用匹配规则过滤器返回国际属性值。有关常规 ldapsearch 语法的详情,请参考 第 14.3 节 “LDAP 搜索过滤器”。
D.4.1. 匹配规则格式 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
国际化搜索的匹配规则过滤器可以以任何多种方式表示,使用哪些规则是首选的:
- 作为针对搜索基础的区域设置的 OID。
- 作为与针对搜索基础的 collation 顺序关联的语言标签。
- 作为 collation 顺序和代表关系 Operator 的后缀的 OID。
- 与 collation 顺序关联的语言标签和代表相关操作器的后缀。
在以下部分中讨论每个选项的语法:
D.4.1.1. 为匹配规则使用 OID 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Directory 服务器支持的每个区域设置都有一个关联的协调顺序 OID。有关 Directory 服务器支持的 OID 列表,请参阅
/etc/dirsrv/config/slapd-collations.conf
文件。
collation order OID 可以在匹配规则过滤器的匹配规则部分中使用,如下所示:
attr:OID:=(relational_operator value)
attr:OID:=(relational_operator value)
关系运算符包含在字符串的 value 部分中,用单个空格与值分开。例如,要在 Swedish collation 顺序中搜索位于 N4709 或之后的所有
departmentNumber
属性,请使用以下过滤器:
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
D.4.1.2. 将语言标签用于匹配规则 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Directory 服务器支持的每个区域设置都有一个关联的语言标签。有关 Directory 服务器支持的语言标签列表,请查看
/etc/dirsrv/config/slapd-collations.conf
文件。
language 标签可以在匹配规则过滤器的匹配规则部分中使用,如下所示:
attr:language-tag:=(relational_operator value)
attr:language-tag:=(relational_operator value)
关系运算符包含在字符串的 value 部分中,用单个空格与值分开。例如,要使用 Spanish collation 顺序搜索所有描述属性,其值为 estudiante,请使用以下过滤器:
cn:es:== estudiante
cn:es:== estudiante
D.4.1.3. 为匹配规则使用 OID 和 Suffix 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
作为使用关联 operator-value 对的替代选择,将代表特定 Operator 的后缀附加到过滤器的匹配规则部分的 OID 中。组合 OID 和后缀,如下所示:
attr: OID+suffix:=value
attr: OID+suffix:=value
注意
这个语法只支持
mozldap
工具,而不是 OpenLDAP 工具(如 ldapsearch )。
例如,要以 German collation 顺序搜索带有值 softwareprodukte 的
businessCategory
属性,请使用以下过滤器:
businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte
businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte
上例中的 .3 是相等的后缀。
有关 Directory 服务器支持的 OID 列表,请参阅
/etc/dirsrv/config/slapd-collations.conf
文件。有关相关操作器及其等效后缀的列表,请参阅 表 D.2 “搜索类型、Operator 和后缀”。
D.4.1.4. 为匹配规则使用语言标签和后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
作为使用关联 operator-value 对的替代选择,将代表特定运算符的后缀附加到过滤器匹配规则部分的 language 标签中。将语言标签和后缀组合如下:
attr: language-tag+suffix:=value
attr: language-tag+suffix:=value
注意
这个语法只支持
mozldap
工具,而不是 OpenLDAP 工具(如 ldapsearch )。
例如,要搜索在法语排序中或之后的 La Salle 的所有姓氏,请使用以下过滤器:
sn:fr.4:=La Salle
sn:fr.4:=La Salle
有关 Directory 服务器支持的语言标签列表,请查看
/etc/dirsrv/config/slapd-collations.conf
文件。有关相关操作器及其等效后缀的列表,请参阅 表 D.2 “搜索类型、Operator 和后缀”。
D.4.2. 支持的搜索类型 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录服务器支持以下类型的国际搜索:
- 等于(=)
- substring (*)
- greater-than (>)
- 大于或等于(>=)
- less-than (<)
- less-than 或 equal-to (<=)
大约或电话的搜索仅以英语支持。
与常规 ldapsearch 搜索操作一样,国际搜索使用运算符来定义搜索类型。但是,当调用国际搜索时,在搜索字符串的值部分中使用标准运算符(=、>=、>、<=)或使用特殊类型的运算符,称为后缀(不与目录后缀混淆)。表 D.2 “搜索类型、Operator 和后缀” 总结了每种搜索类型、操作器和等同的后缀。
搜索类型 | Operator | 后缀 |
---|---|---|
less-than | < | .1 |
less-than 或 equal-to | <= | .2 |
ç›¸ç‰ | = | .3 |
greater-than 或 equal-to | >= | .4 |
greater-than | > | .5 |
子字符串 | * | .6 |
D.4.3. 国际搜索示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下小节介绍了如何对目录数据执行国际搜索。每个示例都提供了所有可能的匹配规则过滤器格式,以便您可以熟悉格式并选择最适合的格式。
D.4.3.1. less-Than 示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 less-than 运算符(<)或后缀(.1)执行特定特定搜索,搜索给定属性在特定 collation 顺序前出现的所有属性值。
例如,要在西班牙语协调顺序中搜索在 surname Marquez 之前的姓氏,以下任何匹配的规则过滤器都可以正常工作:
D.4.3.2. less-Than 或 Equal-to 示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 less-than 或 equal-to 运算符(<=)或后缀(.2)执行特定特定搜索,搜索按特定 collation 顺序位于或之前给定属性的所有属性值。
例如,要搜索在 Hungarian collation 顺序中位于或前为 CZ422 的所有房间号,以下任何匹配规则过滤器可以正常工作:
D.4.3.3. 相等示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用等于 operator (=)或后缀(.3)执行特定于区域设置的搜索,搜索与特定 collation 顺序与给定属性匹配的所有属性值。
例如,要搜索所有带有值 softwareprodukte 的
businessCategory
属性,以下任何匹配规则过滤器都可以正常工作:
D.4.3.4. greater-Than 或 Equal-to 示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
执行一个特定与本地化的搜索,使用大于或等于运算符 (>=) 或后缀 (.4) 搜索根据一个特定的 collation 顺序位于给定属性或属性后的所有属性值。
例如,要搜索在法语排序中的 Québec 后面或之后的所有位置,以下任何匹配规则过滤器可以正常工作:
D.4.3.5. 更重要的示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用大于号运算符(>)或后缀(.5)执行特定特定搜索,搜索按特定协调顺序位于或之前给定属性的所有属性值。
例如,要搜索以 Czech collation 顺序在主机 schranka4 之后的所有邮件主机,以下任何匹配的规则过滤器都可以正常工作:
D.4.3.6. 子字符串示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
执行国际子字符串搜索以指定 collation 顺序搜索与给定模式匹配的所有值。
例如,要搜索以中文 协调 顺序结束的所有用户 ID,以下任何匹配规则过滤器都可以正常工作:
如果过滤器包含一个或多个空格字符,则子字符串搜索过滤器使用 DN-valued 属性(如
modifiersName
或 memberOf
)无法正确匹配条目。
要临时解决这个问题,请在过滤器中使用整个 DN 而不是子字符串,或者确保过滤器中的 DN 子字符串从 RDN 边界开始;即,确保它以 DN 的 type= 部分开头。例如,不应使用这个过滤器:
(memberOf=*Domain Administrators*)
(memberOf=*Domain Administrators*)
但是,其中任何一个可以正常工作:
(memberOf=cn=Domain Administrators*) ... (memberOf=cn=Domain Administrators,ou=Groups,dc=example,dc=com)
(memberOf=cn=Domain Administrators*)
...
(memberOf=cn=Domain Administrators,ou=Groups,dc=example,dc=com)