第 3 章 在子字符串索引中更改搜索键长度


默认情况下,子字符串索引的搜索键的长度必须至少为 三个 字符。例如,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. 要设置新的搜索密钥长度,请将 scalable Object 对象类添加到该条目,然后将 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

验证

  1. 选择您要更改搜索密钥长度的属性,例如 cn
  2. 转储 cn 索引:

    1. 在带有 Berkeley Database (BDB)的实例上,运行:

      # dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
      Copy to Clipboard Toggle word wrap
    2. 在带有 Lightning Memory-Mapped Database (LMDB)的实例上,运行:

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

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

      1. 在带有 Berkeley Database (BDB)的实例上,运行:

        # dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
        Copy to Clipboard Toggle word wrap
      2. 在带有 Lightning Memory-Mapped Database (LMDB)的实例上,运行:

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat