How to make Search Results Actionable
This question from your clients will always come up. You have just integrated their LOB system into SharePoint Search and now you are having results show up. Those results are nothing more than a set of property values that were crawled earlier and now your clients want to be able to actually interact with them. The first question to ask is what level of interaction are they looking for. Here are the different levels:
- Launch a client application to open and work with the item.
- Go to a details page on your portal with more data about the item and that has more links to work with the item.
- Provide a contextual menu on each item that lets you act directly on that item. Open/Edit/Check-In/ Check-Out. These menu clicks will need to go to somewhere and provide the desired functionality.
As I stated above your search results are just crawled property values with no magic solution built in for working with the results (unless they are crawls of standard portal content sources, but we are talking about all the other LOB systems out there). By default one of the properties that gets crawled is the link or HREF, and this is what will be the link that you get served. If you are using a vendor provided integration then the integration may be taken care of for you. Some vendors create a central site under _layouts which serves as the target for all their items they index.
But let's focus on a custom integration for now. You have just written a neat protocol handler (http://sharepointsearch.com/cs/blogs/notorioustech/archive/2007/06/19/contentenumerator-cs-for-stored-procedure-sample.aspx) or created a BDC definition (http://blah.winsmarts.com/2007-4-SharePoint_2007__BDC_-_Enabling_Search_on_business_data.aspx) to index content from some system. In either case you have to decide what you are going to put in for a hyperlink property for this item.
Note: you CAN"T put javascript as SP Search will URL Encode it for you and that will break it.
Here are some helper ideas on what to actually do to make your results super actionable.
1. Create a destination page like customer.aspx and use the BDC web parts to display a detail view of the search item. Have the id of the item be passed in as a parameter to that customer.aspx and the web parts filter on it. NOTE: The profile page will be the default for BDC items that were indexed by SharePoint search, but I am talking about a custom destination page.
2. If you or a vendor has already developed a web based integration whether SharePoint enabled or not, you can alter the search results xslt to pop open a window to that application passing in the id of the item.
3. If you are good with xslt you can edit the results web part to check for your content type and provide the users with more options than a simple single link. I have created menus on the fly based on both the content source and also individual crawled properties of that item. For instance: You can have a property that says whether an item is readonly or not and provide a link to edit/check out. Ontolica provides you with many tools to customize your results without resorting to xslt editing, including the adding of menu actions based on crawl property values.
4. Client Side Integration - This is for experts only. Microsoft uses activex controls to launch office applications from sharepoint http://blogs.technet.com/josebda/archive/2007/03/26/searching-the-visible-moss-2007-code-for-activex-references.aspx and so can you for your own applications. I will try and whip up a sample, but here is a freeware link http://www.whirlywiryweb.com/q/launchinie.asp for now. So what you do is write some custom xslt to replace the standard href of your content with javascript calls to an embedded activex control on the search results page to launch your client application for your item. I said it was for experts :).
5. Citrix Side integration - Now this is really really tricky. If you are running a citrix server and can host applications there, you can use the newly released WISP SharePoint product from Citrix to actually launch applications from your portal as in #4 above but they don't need to reside on your client. This is not standard public functionality and it took a lot of poking around with reflection to figure out how to trick it to open items that aren't actually stored in the portal, but it works for Hummingbird, Worksite, etc. pretty much every LOB application out there. I would post specifics about this but unfortunately I have to keep some trade secrets for my company. If you have gotten all the way through all of the above and this is a model you are interested in, contact me directly.
Del.icio.us |
Digg It |
Technorati |
Blinklist |
Furl |
reddit |
DotNetKicks