我已经通过 slapd.conf 在 centos 上安装了一个具有 memberof 功能的 openldap 服务器:需要配置的一部分吗?:
index objectClass eq,pres
index ou,cn,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
在 openldap 日志中:
SRCH attr=uid displayName mail member
Jun 21 15:53:52 rhsfugt001 slapd[26924]: <= bdb_equality_candidates: (memberOf) not indexed
我还没有找到解决此问题的解决方案...
这只是一个警告,表示该特定搜索结果的过滤器中使用的某些属性未编入索引。
索引属性是否有意义只能通过查看导致此警告的过滤器来确定。
在为具有较大结果集的属性添加索引以获取不同值时,您还可以显着降低搜索性能。
索引反模式的典型示例:
假设
(uid=foobar)
总是返回一个搜索结果。所以很明显你索引属性uid:
index uid eq
现在使用稍微复杂一些的过滤器是很常见的,例如只搜索“活跃”用户:
(&(uid=foobar)(organizationalStatus=active))
如果你有很多匹配
(organizationalStatus=active)
的用户,如果你只是一个索引,搜索性能会明显更差,因为这个未索引的警告!原因是为每个索引属性生成一个搜索候选集,并且在第二步中,使用未索引的断言过滤搜索候选集。所以在上面的例子
index uid eq
中会产生一个搜索候选集基数为 1,同时index uid,organizationalStatus eq
会产生两个搜索候选集,uid仍然是基数 1,但organizationsStatus基数是 all。=> 不要添加索引只是为了摆脱警告而不分析使用的搜索过滤器和搜索候选集的可能大小!
我通过重新索引修复了这个警告: