Searching using the COM API
Searching using the COM API is explained more fully within the COM API section. This page focuses on the differences between the COM API and the helper functions available within the Vault Application Framework.
When starting with the APIs, the creation of these
SearchCondition objects can be frustrating. Whilst the Vault Application Framework fully supports the COM API - so this approach can be used for searching - it also provides a helper object which abstracts away this process for common scenarios:
The MFSearchBuilder and its various helper methods are explained more fully within the MFSearchBuilder page.
The MFSearchBuilder class is available within the
MFiles.VAF.Common namespace and is used to create and execute searches against a given M-Files Vault. The
MFSearchBuilder class contains a number of methods which aid in the production of
SearchConditions and in the use of the returned results. An example of the code above using
// Create our search builder.
var searchBuilder = new MFSearchBuilder(vault);
// Add an object type filter.
// Add a "not deleted" filter.
// Execute the search.
var searchResults = searchBuilder.Find();
MFSearchBuilder uses the COM API behind-the-scenes, which means that deleted items will be returned unless you add a search condition to filter them out.
Extending the search by other SearchConditions
Other search conditions can be added to the MFSearchBuilder conditions by interacting with
MFSearchBuilder.Conditions. More information on creating standard API search condition objects can be found here.
Working with search results
MFSearchBuilder has been created and populated with the required search conditions, the search can be executed by calling
Find (find all objects that match the conditions, equivalent to calling SearchForObjectsByConditionsEx, which returns an ObjectSearchResults),
FindEx (finding all matching objects), or
FindOneEx (finding just one).
These latter two methods return instances of ObjVerEx. This class is new to the Vault Application Framework and facilitates working with objects, combining both information typically held within ObjectVersion and the object’s PropertyValues.
Using the FindEx method loses the score/ranking information held within the standard ObjectSearchResults. This is only available by calling Find.