第 3 章 在子字符串索引中更改搜索键长度
默认情况下,子字符串索引的搜索键的长度必须至少为 三个 字符。例如,Directory 服务器会将字符串 abc 作为搜索键添加到索引中,而 ab* 则不行。但是,为了提高搜索性能,特别是多个通配符字符进行搜索,您可以缩短搜索键长度。这会增加索引中的搜索密钥数量。
目录服务器有三个属性,用于更改搜索键所需的最少字符数:
-
nsSubStrBegin:在通配符字符前设置搜索键开头的最少字符数。例如:
abc*
abc*
-
nsSubStrMiddle:设置通配符字符之间搜索键中的最少字符数。例如:
*abc*
*abc*
-
nsSubStrEnd:在通配符字符后设置搜索键结尾的字符数。例如:
*xyz
*xyz
3.1. 使用命令行更改子字符串索引中的搜索键长度 复制链接链接已复制到粘贴板!
您可以通过为属性索引设置新的搜索键长度来提高搜索速度。
流程
要设置新的搜索密钥长度,请将 scalable
Object对象类添加到该条目,然后将nsSubStrBegin、nsSubStrEnd或nsSubStrMiddle属性添加到该条目。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新创建索引以应用新设置。例如,在 Directory 服务器实例正在运行时,使用以下命令为指定属性重新创建索引:
dsconf <instance_name> backend index reindex --attr <attribute_name> <database_name>
# dsconf <instance_name> backend index reindex --attr <attribute_name> <database_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
选择您要更改搜索密钥长度的属性,例如
cn。 转储
cn索引:在带有 Berkeley Database (BDB)的实例上,运行:
dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
# dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_lenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在带有 Lightning Memory-Mapped Database (LMDB)的实例上,运行:
dbscan -D mdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
# dbscan -D mdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_lenCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 配置新的搜索键长度 ,如使用命令行 更改子字符串索引中的搜索密钥长度 一节中所述。
停止实例来同步磁盘上的数据库:
dsctl <instance_name> stop
# dsctl <instance_name> stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow 转储
cn索引:在带有 Berkeley Database (BDB)的实例上,运行:
dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
# dbscan -D bdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在带有 Lightning Memory-Mapped Database (LMDB)的实例上,运行:
dbscan -D mdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
# dbscan -D mdb -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
比较
len_2和default_len文件:diff /tmp/len_2 /tmp/default_len
# diff /tmp/len_2 /tmp/default_lenCopy to Clipboard Copied! Toggle word wrap Toggle overflow