AquaLogic Interaction Development Kit (IDK) 6.0.0 |

# Plumtree.Remote.PRC.Search Namespace

Provides interfaces for searching remote systems from the portal.

Three key features of this API allow it to provide a generic interface to search operations within the portal. The first is provision of consistently named request and response objects that disguise the modal nature of search within the portal. The second is the use of a hierarchical naming convention to describe the various named properties, numeric property IDs, and bits of metadata maintained by the portal and its layered applications. The third leverages off the naming scheme to create a "document model" for describing search constraints as well as search results, independently of implementation details within the portal.

For details on Search Server configuration, see KB article 11467. This KB article also contains details on the exception "Query connection queue backlog exceeds maximum (20)".

Since IDK 5.0

Namespace hierarchy

### Classes

Class | Description
--- | ---
Field | Abstract superclass of `PlumtreeField` and `PortalField`.
PlumtreeField | `PlumtreeField` contains all fields common to all AquaLogic User Interaction (formerly Plumtree) applications. `PlumtreeField` is not an enumeration, as new fields can be created using `ForID()`.
PortalField | `PortalField` extends `PlumtreeField` to add fields defined by the portal, including `OBJECT_ID`, `CLASS_ID`, and `FOLDER_PATH`. Additional `PortalField`s corresponding to custom properties can be created using `PortalField.ForID()`. `PortalField` is not an enumeration, as new `PortalField`s can be created using `ForID()`.
SearchException | Thrown when a remote invocation results in an error on the portal side, usually due to invalid parameters.
SearchWarning | Represents warnings defined by the search server.

### Interfaces

Interface | Description
--- | ---
IFilterClause | Interface to add Filter Statements and Clauses to an existing `IFilterClause`. Filter Clauses are created from the `ISearchFactory` interface.
IPortalSearchRequest | Interface to add restrictions to an `ISearchRequest`. `IPortalSearchRequest` is created from the `ISearchFactory` interface. See Search Examples.
IPortalSearchResult | Subinterface of `ISearchResult` that provides convenience methods to retrieve the values of default fields.
ISearchFactory | Factory interface to generate `IPortalSearchRequest` and `IFilterClause`. The example below shows how to query using an AND filter clause and an OR filter clause. Finds all documents that have been created in the last three months AND those documents whose name contains ".doc" OR ".ppt"
    IFilterClause andFilterClause = searchFactory.CreateAndFilterClause();
    //add a statement for created in the last three months
    DateTime dt = DateTime.Now.AddMonths(-3);
    andFilterClause.AddStatement(PlumtreeField.CREATED, Operator.GreaterThan, dt);

    //make an OR filter clause to say we want ppt files or doc files
    IFilterClause orFilterClause = searchFactory.CreateOrFilterClause();
    orFilterClause.AddStatement(PlumtreeField.NAME, Operator.Contains, ".ppt");
    orFilterClause.AddStatement(PlumtreeField.NAME, Operator.Contains, ".doc");
    andFilterClause.AddClause(orFilterClause);

    searchRequest.SetQuery(andFilterClause);
    //note that SetQuery also has an override to take a query and a filter clause.
ISearchRequest | Superinterface of `IPortalSearchRequest` and possibly other search requests, such as Collaboration.
ISearchResponse | Interface for search results.
ISearchResult | Interface to return information about individual search results.
ISearchResultSet | Interface to return an enumeration of `IPortalSearchResult`s.