You cannot index the values of a virtual attribute because the values can change from one invocation to the next.
Some virtual attributes implement support for an index-like functionality by offering logic that can quickly identify entries with specified virtual attribute values. These include the following:
- When mirroring values from another attribute in the same entry, and when that source attribute type is indexed, the mirror virtual attribute provider can use an internal search to identify matching entries.
- The entryDN virtual attribute provider retrieves the entry with the specified distinguished name (DN).
- The isMemberOf virtual attribute provider uses the server’s group manager to identify the members of a targeted group.
This is not an option for all types of virtual attributes.
Index-like functionality is not available for the following virtual attribute types:
- User-defined virtual attributes that have a static value
- Constructed virtual attributes whose values are composed from multiple other attributes in the same entry
- Mirror virtual attributes whose values come from other entries
- Any custom virtual attribute types implemented using the Server SDK
If you want to have a mix of standard and virtual values for the same attribute type, whether in the same entry or in different entries, there is not a good solution. If you define an index for that attribute type, it only includes entries with standard values and entries with virtual values are overlooked. If there is no index but the virtual attribute provider supports some search functionality, only entries with virtual values are matched and entries with only standard values are excluded.