Searching for Workspaces 
You can search and retrieve workspaces according to the specified search criteria, as well as define various parameters for the presentation of search results, such as sort order or number of results to display on one page.
The following example illustrates searching for workspaces using the SearchControl object:
Example
private void searchForWorkspace(IPortalComponentRequest request, String inputQuery)
{
// Retrieve the workspace directory
IWorkspacesRuntime workspacesRuntime = RuntimeFactory.getWorkspacesRuntime();
IWorkspaceDirectory workspaceDirectory = (IWorkspaceDirectory) workspacesRuntime.getService(IWorkspaceDirectory.class);
SearchControl searchControl = new SearchControl();
// Define which workspace permission policies to include in the search
PermissionPolicy[] permissionPolicies = new PermissionPolicy[2];
permissionPolicies[0] = PermissionPolicy.PUBLIC;
permissionPolicies[1] = PermissionPolicy.RESTRICTED;
searchControl.setPermissionPolicies(permissionPolicies);
// Defines the sort order of the search results
searchControl.setSortBy(SortBy.NAME_DESCENDING);
// Defines the maximum number of workspaces to return as a result of the search
searchControl.setMaxResults(5000);
//Sets a SearchFilter object that defines additional search parameters
SearchFilter searchFilter = new SearchFilter();
searchFilter.setLocale(request.getLocale());
searchFilter.setOwner("Denise Smith");
searchControl.setSearchFilter(searchFilter);
// Search for workspaces according to the specified parameters
ISearchResults searchResults = workspaceDirectory.search(searchControl);
// Returns an array of workspaces that match the search criteria defined by SearchControl
WorkspaceInfo[] sharedWorskpaces = searchResults.getWorkspacesInfo();
}