Handling Extensible Match FiltersChapter 11 Writing Matching Rule Plug-ins 143How the Server Handles the FilterWhen the server processes a search request that has an extensible match filter, theserver does the following:1. First, the server finds the plug-in associated with this OID, if an associationbetween the OID and plug-in has already been made.If no association has been made yet, the server attempts to find a matching ruleplug-in that handles the OID. See “How the Server Associates Plug-ins withOIDs,” on page 135, for details.2. Next, the server attempts to generate a list of search result candidates from theindexes. In a new Slapi_PBlock parameter block, the server does thefollowing:m The server puts the filter object in the SLAPI_PLUGIN_OBJECT parameterand calls the filter index function (specified in theSLAPI_PLUGIN_MR_FILTER_INDEX_FN parameter).m The server checks the value of the SLAPI_PLUGIN_MR_QUERY_OPERATORparameter. If the operator is a known type (such as SLAPI_OP_EQUAL), theserver will use the operator when searching the index for candidates. Fordetails, see “Query Operators in Matching Rules,” on page 144.m The server sets the SLAPI_PLUGIN_MR_VALUES parameter to each of thevalues specified in the filter and calls the indexer function (which isspecified in the SLAPI_PLUGIN_MR_INDEX_FN parameter) to generate thekey (specified in the SLAPI_PLUGIN_MR_KEYS parameter).m The server uses the keys and the query operator to find potentialcandidates in the indexes.The server considers all entries to be potential candidates if at least one of thefollowing is true:m The matching rule plug-in has no indexer function (specified in theSLAPI_PLUGIN_MR_INDEX_FN parameter).m No index applies to the search (for example, if the query operator does notcorrespond to an index).m No keys are generated for the specified values.3. For each candidate entry, the server checks to see if the entry matches thesearch filter by doing the following: