Sdílet prostřednictvím


Řazení výsledků hledání pomocí IDirectorySearch

Ve výchozím nastavení se výsledky hledání vrátí bez zaručeného pořadí. Předvolba ADS_SEARCHPREF_SORT_ON dává serveru pokyn, aby před vrácením klientovi seřadil sadu výsledků podle zadané hodnoty atributu.

Pro řazení se doporučuje používat indexované atributy. Jinak musí server načíst úplnou sadu výsledků a seřadit ji před odesláním výsledků klientovi. To platí také pro stránkovaná hledání. Mějte na paměti, že výkon seřazeného vyhledávání se zvýší, pokud filtr obsahuje indexovaný atribut a tento atribut je zadán jako klíč řazení; v tomto případě může Active Directory při zpracování filtru vyhovět řazení. Například efektivní řadicí dotaz pro skupinu uživatelů může mít filtr, který obsahuje (sn>smith), a klíč pro řazení sn.

Řazení na straně serveru s parametrem hledání ADS_SEARCHPREF_SORT_ON výkon serveru sníží. Pokud budete provádět mnoho hledání, zvažte ruční řazení výsledků na straně klienta, abyste snížili zatížení na serveru.

Ve výchozím nastavení je řazení výsledků zakázané. Pokud chcete povolit řazení výsledků, nastavte ADS_SEARCHPREF_SORT_ON vyhledávací možnost s ADSTYPE_PROV_SPECIFIC, které odkazuje na strukturu ADS_SORTKEY v poli ADS_SEARCHPREF_INFO předané metodě IDirectorySearch::SetSearchPreference. Struktura ADS_SORTKEY slouží k určení atributu pro řazení a pořadí řazení.

Následující příklad kódu ukazuje, jak povolit řazení výsledků.

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;

Služba Active Directory nepodporuje řazení podle konstruovaných atributů, takže není možné zadat vytvořený atribut pro řazení. Atribut distinguishedName nelze použít také pro řazení. Služba Active Directory také neumožňuje řazení podle více než jednoho atributu, takže možnost hledání ADS_SEARCHPREF_SORT_ON může obsahovat pouze jednu ADS_SORTKEY strukturu.