必须手动定义用于对客户端搜索结果进行排序的自定义浏览索引。要创建浏览索引,也称为虚拟列表视图 (Virtual List View, VLV) 索引,请使用以下过程。本部分还包括添加或修改浏览索引条目以及重新生成浏览索引的过程。
对于此过程的某些部分,可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。此过程的其他部分只能使用命令行完成。
使用 ldapmodify 命令添加新的浏览索引条目或编辑现有的浏览索引条目。
有关说明,请参见添加或修改浏览索引条目。
运行 dsconf reindex 命令以生成一组新的要由服务器维护的浏览索引。
有关说明,请参见重新生成浏览索引。
浏览索引专用于给定基条目及其子树上的给定搜索。浏览索引配置在包含条目的后缀的数据库配置中进行定义。
为目录服务器上的每个浏览索引配置 vlvBase、vlvScope 和 vlvFilter 属性。
这些属性用于配置搜索基、搜索范围和搜索过滤器。这些属性将使用 vlvSearch 对象类。
为每个浏览索引配置 vlvSort 属性。
此属性指定用于对索引进行排序的属性的名称。此条目是第一个条目的子条目,并使用 vlvIndex 对象类指定要进行排序的属性以及排序顺序。
以下示例使用 ldapmodify 命令创建浏览索引配置条目:
$ ldapmodify -a -h host -p port -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: cn=people_browsing_index, cn=database-name, cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvSearch cn: Browsing ou=People vlvBase: ou=People,dc=example,dc=com vlvScope: 1 vlvFilter: (objectclass=inetOrgPerson) dn: cn=Sort rev employeenumber, cn=people_browsing_index, cn=database-name,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvIndex cn: Sort rev employeenumber vlvSort: -employeenumber ^D |
vlvScope 为以下任一选项:
0(仅基条目)
1(基条目的直接子条目)
2(以基条目为根的整个子树)
vlvFilter 是客户端搜索操作中使用的 LDAP 过滤器。由于所有浏览索引条目都位于相同位置,因此您应该使用描述性的 cn 值来命名浏览索引。
每个 vlvSearch 条目都必须至少有一个 vlvIndex 条目。vlvSort 属性是属性名称列表,用于定义要排序的属性以及排序顺序。属性名称前面的破折号 ( -) 表明使用相反的顺序。通过定义多个 vlvIndex 条目可以为搜索定义多个索引。您可以为上面的示例添加以下条目:
$ ldapmodify -a -h host -p port -D cn=admin,cn=Administrators,cn=config -w - dn: cn=Sort sn givenname uid, cn=people_browsing_index, cn=database-name,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvIndex cn: Sort sn givenname uid vlvSort: sn givenname uid ^D |
要修改浏览索引配置,请编辑相应的 vlvSearch 条目或相应的 vlvIndex 条目。
要删除某个浏览索引以便服务器不再维护该浏览索引,请删除单个的 vlvIndex 条目。
或者,如果只有一个 vlvIndex 条目,请同时删除 vlvSearch 条目和 vlvIndex 条目。
创建浏览索引条目之后,将为指定属性生成新的浏览索引。
$ dsadm reindex -l -t attr-index instance-path suffix-DN |
此命令将扫描目录内容,并为浏览索引创建数据库文件。
以下示例将生成您在上一部分定义的浏览索引:
$ dsadm reindex -l -b database-name -t Browsing /local/ds \ ou=People,dc=example,dc=com |
有关 dsadm reindex 命令的详细信息,请参见 dsadm(1M) 手册页。