Search API

The Search API uses the Events API that is part of JSR-286. Below is a summary of the approach used to implement the new Search API included in uPortal 4

How To Integrate with the uPortal Search API

Step 1. Add the uportal-search-api jar to your portlet

Step 2. Add the portlet-app level event-definitions and .....

Add the portlet-app level event-definitions and the portlet level supported-publishing-event and supported-processing-event elements. These declare to the portal the events your portlet app knows about and which events your portlet wants to be notified of and which events it will be publishing.

Step 3. Add @EventMapping...

Add @EventMapping(SearchConstants.SEARCH_REQUEST_QNAME_STRING) to a method in a @Controller

  1. See the searchContent method in https://github.com/Jasig/SimpleContentPortlet/tree/master/src/main/java/org/jasig/portlet/cms/mvc/portlet/SearchContentController.java
  2. Here is where the work happens, EventRequest.getEvent() returns a SearchRequest
  3. SearchRequest specified the search terms that were specified, your portlet should use these to do its searching
  4. If there is a hit create a SearchResults object, copy over the queryId, set the windowId, for each result create a SearchResult and set title/summary.  Set the type to a string relevant to your portlet.  The type is used to
    1. determine which tab to display the results on (as determined by map "searchTabs" in bean https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/resources/properties/contexts/servicesContext.xml)
    2. For prioritizing results for the ajax search autocomplete feature (see searchAutocompletePriorityMap in bean https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/resources/properties/contexts/servicesContext.xml and Configuring Search).
  5. Call EventResponse.setEvent to send the results back to the search portlet
  6. This example is Spring 3.x specific but it can be doing using the plain-old portlet 2 APIs as well

 

Additional References

List of Apereo Portlets Already Integrated with the uPortal Search API

PortletSearch Results Type value
Calendarv2.1.3-M3: Calendar, pre v2.1.3-M3: null
Simple Content Management Portletv1.0.8: Portlet Content, pre v1.0.8: null
Contacts Portletcontact

Having problems with these instructions?

Please send us feedback at uportal-user@lists.ja-sig.org