6.4. 在子字符串索引中更改搜索密钥长度


默认情况下,子字符串索引的搜索键长度必须至少为 三个 字符。例如,Directory 服务器会将字符串 abc 作为搜索键添加到索引中,而 ab* 则不会。但是,为了提高搜索性能,特别是对于使用带有许多通配符字符的搜索,您可以缩短搜索密钥长度。这会增加索引中的搜索键数。

目录服务器有三个属性,它们更改搜索键所需的最小字符数:

  • nsSubStrBegin :在通配符字符前设置搜索键开头的字符数。例如:
abc*
Copy to Clipboard Toggle word wrap
  • nsSubStrMiddle :设置通配符字符之间的搜索键中的最小字符数。例如:
*abc*
Copy to Clipboard Toggle word wrap
  • nsSubStrEnd :在通配符字符后设置搜索键结尾的字符数。例如:
*xyz
Copy to Clipboard Toggle word wrap

您可以通过为属性索引设置新的搜索键长度来提高搜索速度。

流程

  1. 要设置新的搜索密钥长度,请添加 extensibleObject 对象类,然后将 nsSubStrBeginnsSubStrEndnsSubStrMiddle 属性添加到条目。例如:

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    
    dn: <attribute_name>,cn=index,cn=<database_name>,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    add: objectclass
    objectclass: extensibleObject
    -
    add: nsSubStrBegin
    nsSubStrBegin: 2
    -
    add: nsSubStrMiddle
    nsSubStrMiddle: 2
    -
    add: nsSubStrEnd
    nsSubStrEnd: 2
    Copy to Clipboard Toggle word wrap
  2. 重新创建索引以应用新设置。例如,在 Directory 服务器实例正在运行时,使用以下命令为指定属性重新创建索引:

    # dsconf <instance_name> backend index reindex --attr <attribute_name> <database_name>
    Copy to Clipboard Toggle word wrap

验证

  • 选择您要更改搜索键长度的属性,如 cn
  • 转储 cn 索引:

    # dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
    Copy to Clipboard Toggle word wrap
  • 配置新的搜索密钥长度,如 ,如 使用命令行更改子字符串索引中的搜索密钥长度一节中所述
  • 停止实例来同步磁盘上的数据库:

    # dsctl <instance_name> stop
    Copy to Clipboard Toggle word wrap
  • 转储 cn 索引:

    # dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
    Copy to Clipboard Toggle word wrap
  • 比较 len_2default_len 文件:

    # diff /tmp/len_2 /tmp/default_len
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat