Sun Java System Communications Services 2005Q4 发行说明

更新索引

执行 LDAP 搜索时,大多数性能问题都是由没有索引或未正确配置索引造成的。在默认情况下,Directory Server 已配置,以便为 Communications Express 或 Connector for Microsoft Outlook 发出的查找编制索引并能够在合理的时间范围内返回索引结果。然而,Directory Server 没有设置国际化搜索。因此,用户必须改变现有索引才能使用选定的排序规则。《Sun Java System Directory Server 5 2005Q1 Administration Guide》中的 "Managing Indexes" 部分中介绍这一操作过程。

例如,CN 属性在默认情况下按 userRoot 后缀编制索引:

# ldapsearch -D "cn=Directory manager" -b 
"cn=cn,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config" 
"objectclass=*" 
cn=cn,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config 
objectClass=top objectClass=nsIndex 
cn=cn 
nsSystemIndex=false 
nsIndexType=pres 
nsIndexType=eq 
nsIndexType=sub

要使其能够应用英文(美国)排序规则进行国际化搜索,请添加一个具有英文(美国)OID 的 nsMatchingRule 属性。客户端将执行子字符串搜索,因此必须向 OID 中添加子字符串后缀 (".6"):

#ldapmodify -D "cn=Directory manager"
dn: cn=cn,cn=index,cn=userRoot,cn=ldbm database, 
 cn=plugins,cn=config
changetype: modify
add: nsMatchingRule
nsMatchingRule: 1.3.6.1.4.1.42.2.27.9.4.34.1.6 

注 –

请不要在该值的开头或结尾处添加任何空格、制表符或其他非可见字符。



注 –

nsMatchingRule 是一个多值属性。可以添加对同一个 OID 或不同 OID 的各种类型的搜索。


然后用户必须运行位于 serverroot/slapd-instance 中的 db2index.pl 脚本:

# perl db2index.pl -D "cn=Directory Manager" -w \ 
secret -n userRoot -t cn

此操作是联机运行的,可能要花费一段时间才能完成。另外,可以重新初始化后缀。请参见《Sun Java System Directory Server 5 2005Q1 Administration Guide》中的 "Reinitializing a Suffix"。

控制台还可用于添加 nsMatchingRule(请参见《Sun Java System Directory Server 5 2005Q1 Administration Guide》中的 "Managing Indexes" 部分)。

在以下各节中,提供了需要修改的索引列表。请确保未执行任何非索引搜索。您可以通过查看 Directory Server 访问日志文件(并在搜索结果条目中查找 =U 的注释)来进行监控。