13.6. Indexed Substring Search の Width の変更
デフォルトでは、検索がインデックス化されるようにするには、検索文字列はワイルドカード文字をカウントせずに 3 文字以上である必要があります。たとえば、abc という文字列はインデックス検索になりますが、ab* はインデックス検索になりません。インデックス化された検索は、インデックスなし検索よりもはるかに高速であるため、検索キーの最小長を変更すると、インデックス化された検索の数を増やすと便利です。
検索パフォーマンスを改善するために、特に多くのワイルドカード検索を持つサイトの場合は、インデックス化された検索の検索文字列の長さを変更できます。Directory Server には、インデックス化された検索に必要な最小文字数を変更できる属性が 3 つあります。
nsSubStrBegin
属性は、ワイルドカードの前に検索文字列の最初にインデックス化された検索に必要な文字数を設定します。abc*
nsSubStrMiddle
属性は、検索文字列の途中でワイルドカードが使用される、インデックス化された検索に必要な文字数を設定します。以下に例を示します。*abc*
nsSubStrEnd
属性は、ワイルドカードの後に検索文字列の最後にインデックス化された検索に必要な文字数を設定します。以下に例を示します。*xyz
文字列トリプレット (before、middle、end) のデフォルトの部分文字列検索の長さは 3、3、および 3 であり、すべての検索でワイルドカードの位置に最低 3 文字を必要とします。
別の文字列の長さを持つ属性インデックスは、extensibleObject オブジェクトクラスをエントリーに追加してから、部分文字列の検索の長さを設定します。
- 特定の属性インデックスの新しいキーの長さを設定します。これには、extensibleObject オブジェクトクラスを追加してから、
nsSubStrBegin
属性、nsSubStrEnd
属性、またはnsSubStrMiddle
属性を適宜追加する必要があります。以下に例を示します。# ldapmodify -D "cn=Directory Manager" -W -p 389 -h 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