13.6. Indexed Substring Search の Width の変更
デフォルトでは、検索がインデックス化されるようにするには、検索文字列はワイルドカード文字をカウントせずに 3 文字以上である必要があります。たとえば、abc という文字列はインデックス検索になりますが、ab* はインデックス検索になりません。インデックス化された検索は、インデックスなし検索よりもはるかに高速であるため、検索キーの最小長を変更すると、インデックス化された検索の数を増やすと便利です。
検索パフォーマンスを改善するために、特に多くのワイルドカード検索を持つサイトの場合は、インデックス化された検索の検索文字列の長さを変更できます。Directory Server には、インデックス化された検索に必要な最小文字数を変更できる属性が 3 つあります。
nsSubStrBegin属性は、ワイルドカードの前に検索文字列の最初にインデックス化された検索に必要な文字数を設定します。abc*
abc*Copy to Clipboard Copied! Toggle word wrap Toggle overflow nsSubStrMiddle属性は、検索文字列の途中でワイルドカードが使用される、インデックス化された検索に必要な文字数を設定します。以下に例を示します。ab*z
ab*zCopy to Clipboard Copied! Toggle word wrap Toggle overflow nsSubStrEnd属性は、ワイルドカードの後に検索文字列の最後にインデックス化された検索に必要な文字数を設定します。以下に例を示します。*xyz
*xyzCopy to Clipboard Copied! Toggle word wrap Toggle overflow
文字列トリプレット (before、middle、end) のデフォルトの部分文字列検索の長さは3、3、および 3であり、すべての検索でワイルドカードの位置に最低 3 文字を必要とします。
別の文字列の長さを持つ属性インデックスは、extensibleObject オブジェクトクラスをエントリーに追加してから、部分文字列の検索の長さを設定します。
- 特定の属性インデックスの新しいキーの長さを設定します。これには、extensibleObject オブジェクトクラスを追加してから、
nsSubStrBegin属性、nsSubStrEnd属性、またはnsSubStrMiddle属性を適宜追加する必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サーバーを停止します。
systemctl stop dirsrv.target
# systemctl stop dirsrv.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 属性インデックスを再作成します。部分文字列検索の幅オプションのいずれかを変更した場合は、インデックス全体を再作成する必要があります。
db2index -t attribute_name
# db2index -t attribute_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - サーバーを再び起動します。
systemctl start dirsrv.target
# systemctl start dirsrv.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow