6.4. 在子字符串索引中更改搜索密钥长度
默认情况下,子字符串索引的搜索键长度必须至少为 三个 字符。例如,Directory 服务器会将字符串 abc
作为搜索键添加到索引中,而 ab*
则不会。但是,为了提高搜索性能,特别是对于使用带有许多通配符字符的搜索,您可以缩短搜索密钥长度。这会增加索引中的搜索键数。
目录服务器有三个属性,它们更改搜索键所需的最小字符数:
-
nsSubStrBegin
:在通配符字符前设置搜索键开头的字符数。例如:
abc*
abc*
-
nsSubStrMiddle
:设置通配符字符之间的搜索键中的最小字符数。例如:
*abc*
*abc*
-
nsSubStrEnd
:在通配符字符后设置搜索键结尾的字符数。例如:
*xyz
*xyz
6.4.1. 使用命令行更改子字符串索引中的搜索密钥长度 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以通过为属性索引设置新的搜索键长度来提高搜索速度。
流程
要设置新的搜索密钥长度,请添加
extensibleObject
对象类,然后将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
索引:dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
# dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/default_len
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 配置新的搜索密钥长度,如 ,如 使用命令行更改子字符串索引中的搜索密钥长度一节中所述。
停止实例来同步磁盘上的数据库:
dsctl <instance_name> stop
# dsctl <instance_name> stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转储
cn
索引:dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
# dbscan -f /var/lib/dirsrv/slapd-<instance_name>/db/database/cn.db > /tmp/len_2
Copy 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_len
Copy to Clipboard Copied! Toggle word wrap Toggle overflow