共用方式為


使用 IDirectorySearch 排序搜尋結果

根據預設,搜尋的結果會以不保證的順序傳回。 ADS_SEARCHPREF_SORT_ON喜好設定會指示伺服器先在指定的屬性值上排序結果集,然後再傳回用戶端。

建議使用索引屬性進行排序。 否則,伺服器必須擷取完整的結果集並加以排序,再將任何結果傳送至用戶端。 這也適用於分頁搜尋。 請注意,如果篩選包含索引屬性,且該屬性指定為排序索引鍵,排序搜尋的效能將會增加;在此情況下,Active Directory 可以在處理篩選時滿足排序。 例如,一組使用者的有效排序查詢可能會有包含 (sn>smith) 和 sn 排序索引鍵的篩選條件。

使用 [ADS_SEARCHPREF_SORT_ON 搜尋] 選項的伺服器端排序將會降低伺服器的效能。 如果您要執行許多搜尋,請考慮在用戶端手動排序結果,以減少伺服器上的工作負載。

根據預設,結果排序會停用。 若要啟用結果排序,請使用指向傳遞至 IDirectorySearch::SetSearchPreference 方法之ADS_SEARCHPREF_INFO陣列中指向ADS_SORTKEY結構的ADSTYPE_PROV_SPECIFIC設定ADS_SEARCHPREF_SORT_ON搜尋選項。 ADS_SORTKEY 結構可用來指定要排序的屬性和排序順序。

下列程式代碼範例示範如何啟用結果排序。

ADS_SORTKEY SortKey;
SortKey.pszAttrType = L"cn";
SortKey.pszReserved = NULL;
SortKey.fReverseorder = FALSE;

ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_SORT_ON;
SearchPref.vValue.dwType = ADSTYPE_PROV_SPECIFIC;
SearchPref.vValue.ProviderSpecific.dwLength = sizeof(SortKey);
SearchPref.vValue.ProviderSpecific.lpValue = (LPBYTE)&SortKey;

Active Directory 不支援在建構的屬性上進行排序,因此無法指定已建構的屬性進行排序。 distinguishedName 屬性也無法用於排序。 Active Directory 也不允許對多個屬性進行排序,因此 ADS_SEARCHPREF_SORT_ON 搜尋選項只能包含一個 ADS_SORTKEY 結構。