AquaLogic User Interaction Development Guide

     Previous Next  Open TOC in new window   View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

Managing Search Results Using the IDK Remote Search API

To manage the results returned from a search in a remote application, use the IPortalSearchResult interface.

AquaLogic Interaction Search stores numeric and date fields (properties) as 32-bit floats. This means that any prc.search method that returns the value of a numeric field is potentially subject to roundoff. getFieldAsInt is converted to a float and then converted back to an int. getFieldAsFloat rounds the original value to return it as a float.
This example continues the sample code from Querying ALI Objects Using the IDK Remote Search API. The code samples below print out a result summary and display the returned properties.
Note: To access the additional property referenced in the setFieldsToReturn method of IPortalSearchRequest, this example uses getFieldAsString. This is because the field type is unknown; if you know the type of property being returned, use the appropriate type-specific field (e.g., getFieldAsDate, getFieldAsFloat).

Java

public static void displayResults(IPortalSearchRequest searchRequest, int propertyID)
    throws SearchException, RemoteException
{

	//execute the search
	ISearchResponse searchResponse = searchRequest.execute();

	//get information about the number of results returned
	System.out.println("Total matches is " + searchResponse.getTotalCount());
	System.out.println("First result is " + searchResponse.getFirstResultIndex());
	System.out.println("Number returned is " + searchResponse.getReturnedCount());

	//write out any warnings
	SearchWarning warning = searchResponse.getWarning();
	if (null != warning)
	{
		if (warning.getCode() == (SearchWarning.PROCESSING_TIMED_OUT.getCode()))
		{
			System.out.println("Search Warning: Timed out when processing search request; a partial search result was returned");
		}
		if (warning.getCode == (SearchWarning.TOO_MANY_WILDCARD_EXPANSIONS.getCode())
		{
			System.out.println("Search Warning: A wildcard query, such as \"a*\", matched a large number of patterns, only some of which were used for your search.");
		}
	}

	//make the PortalField based on the property ID (from IPortalSearchRequest.SetFieldsToReturn)
	Field propField = PortalField.forID(propertyID);

	//iterate through the results
	ISearchResultSet resultSet = searchResponse.getResultSet();
	IEnumerator results = resultSet.getResults();
	while (results.hasMoreElements())
	{
		System.out.println("--------------------------------------------------");
		IPortalSearchResult result = (IPortalSearchResult) results.nextElement();
		System.out.println("name is " + result.getName());
		System.out.println("class id is " + result.getClassID());
		System.out.println("created is " + result.getCreated());
		System.out.println("excerpt is " + result.getExcerpt());
		System.out.println("last modified is " + result.getLastModified());
		System.out.println("object id is " + result.getObjectID());
		System.out.println("url is " + result.getURL());
		System.out.println("icon url is " + result.getIconURL());
		System.out.println("rank is " + result.getRank());
		//write out the property if the field exists
		Object value = result.getFieldAsObject(propField);
		if (null != value)
		{
			//use GetFieldAsString because type of field is unknown
			String propResult = result.GetFieldAsString(propField);
			System.out.println("property field is " + propResult);
		}
	}
}

.NET (C#)

public static void DisplayResults(IPortalSearchRequest searchRequest, int propertyID)
{

	//execute the search
	ISearchResponse searchResponse = searchRequest.Execute();

	//get information about the number of results returned
	Console.WriteLine("Total matches is " + searchResponse.GetTotalCount());
	Console.WriteLine("First result is " + searchResponse.GetFirstResultIndex());
	Console.WriteLine("Number returned is " + searchResponse.GetReturnedCount());

	//write out any warnings
	SearchWarning warning = searchResponse.GetWarning();
	if (null != warning)
	{
		if (warning.GetCode().Equals(SearchWarning.PROCESSING_TIMED_OUT.GetCode()))
		{
			Console.WriteLine("Search Warning: Timed out when processing search request; a partial search result was returned");
		}
		if (warning.GetCode().Equals(SearchWarning.TOO_MANY_WILDCARD_EXPANSIONS.GetCode())
		{
			Console.WriteLine("Search Warning: A wildcard query, such as \"a*\", matched a large number of patterns, only some of which were used for your search.");
		}
	}

	//make the PortalField based on the property ID (from IPortalSearchRequest.SetFieldsToReturn)
	Field propField = PortalField.ForID(propertyID);

	//iterate through the results
	ISearchResultSet resultSet = searchResponse.GetResultSet();
	IEnumerator results = resultSet.GetResults();
	while (results.MoveNext())
	{
		Console.WriteLine("--------------------------------------------------");
		IPortalSearchResult result = (IPortalSearchResult) results.Current;
		Console.WriteLine("name is " + result.GetName());
		Console.WriteLine("class id is " + result.GetClassID());
		Console.WriteLine("created is " + result.GetCreated());
		Console.WriteLine("excerpt is " + result.GetExcerpt());
		Console.WriteLine("last modified is " + result.GetLastModified());
		Console.WriteLine("object id is " + result.GetObjectID());
		Console.WriteLine("url is " + result.GetURL());
		Console.WriteLine("icon url is " + result.GetIconURL());
		Console.WriteLine("rank is " + result.GetRank());
		//write out the property if the field exists
		Object value = result.GetFieldAsObject(propField);
		if (null != value)
		{
			//use GetFieldAsString because type of field is unknown
			String propResult = result.GetFieldAsString(propField);
			Console.WriteLine("property field is " + propResult);
		}
	}
}

.NET (VB)

Public Shared Sub DisplayResults(ByVal searchRequest As IPortalSearchRequest, ByVal
propertyID As Int32)

	//execute the search
	Dim searchResponse As ISearchResponse = searchRequest.Execute()

	'get information about the number of results returned
	Console.WriteLine("Total matches is "& searchResponse.GetTotalCount())
	Console.WriteLine("First result is "& searchResponse.GetFirstResultIndex())
	Console.WriteLine("Number returned is "& searchResponse.GetReturnedCount())

	'write out any warnings 
	Dim warning AsSearchWarning = searchResponse.GetWarning()
	If Notwarning IsNothing Then

		If (warning.GetCode().Equals(SearchWarning.PROCESSING_TIMED_OUT.GetCode())) Then
			Console.WriteLine("Search Warning: Timed out when processing search request; a partial search result was returned")
	End If

		If (warning.GetCode().Equals(SearchWarning.TOO_MANY_WILDCARD_EXPANSIONS.GetCode()))
		Then
			Console.WriteLine("Search Warning: A wildcard query, such as a*, matched a large number of patterns, only some of which were used for your search.")
		End If

	End If

	'make the PortalField based on the property ID (from IPortalSearchRequest.SetFieldsToReturn)
	Dim propField As Field = PortalField.ForID(propertyID)

	'iterate through the results
	Dim resultSet AsISearchResultSet = searchResponse.GetResultSet()
	Dim results AsIEnumerator = resultSet.GetResults()
	While(results.MoveNext())

		Console.WriteLine("--------------------------------------------------")
		Dim result As IPortalSearchResult = DirectCast(results.Current, IPortalSearchResult)
		Console.WriteLine("name is " + result.GetName())
		Console.WriteLine("class id is " + result.GetClassID())
		Console.WriteLine("created is " + result.GetCreated())
		Console.WriteLine("excerpt is " + result.GetExcerpt())
		Console.WriteLine("last modified is " + result.GetLastModified())
		Console.WriteLine("object id is " + result.GetObjectID())
		Console.WriteLine("url is " + result.GetURL())
		Console.WriteLine("icon url is " + result.GetIconURL())
		Console.WriteLine("rank is " + result.GetRank())
		'write out the property if the field exists
		Dim value As Object = result.GetFieldAsObject(propField)
		If Not value Is Nothing Then
			'use GetFieldAsString because type of field is unknown
			Dim propResult As String = result.GetFieldAsString(propField)
			Console.WriteLine("property field is " + propResult)
		End If

	End While

End Sub

  Back to Top      Previous Next