Saturday, August 15, 2009

Extending Enterprise Search: Programmatically creating Keywords and Best Bets from existing business data

I've been working with a number of customers lately on strategies to increase the value that enterprise search delivers to their users. I'm interested in "quick wins" with SharePoint: Low cost, high visibility solutions that increase user adoption and add real value to a customer's implementation. I recently had a conversation with some members of the SharePoint community who said that Enterprise Search was a good example of a quick win. I disagree strongly on this point. Simply enabling search within SharePoint will not, in my experience, enhance user adoption or deliver an intuitive and helpful user experience. The implementation of enterprise search is an iterative process of plan, design, implement and review. The correct implementation of keywords, best bets, scopes, managed properties and any number of customisations make search work in an individual environment but it is close to impossible to get enterprise search working optimally first time around. Today I'm going to talk about keywords and best bets and why there is value in creating these programmatically.

N.B. for examples of how to achieve this programmatically, please see Stefan Goßner's blog post listed in the references at the end of this article.

Keywords and Best Bets

Keywords provide a way to supplement search results to deliver a context specific definition for a specific search term. Best bets provide a way to add URLs to these keywords that point to where the user is most likely going to want to go to find the information, given their original search term. The screenshot below shows Keywords and Best Bets in action.

Figure 1: Keywords and Best Bets in action

Why create them programmatically?

The reason to create keywords and best bets programmatically is to increase the value of enterprise search by supplementing search results with information the user is likely to want to know from information that already exists within the business – and there may be a large number of these! This point is worth examining a little further. SharePoint delivers true enterprise search capable of connecting to a number of different types of data sources. In practice every data store in the business is hardly ever indexed by SharePoint, so there is nearly always a gap between what the business knows and what SharePoint knows.

Exactly what keywords and best bets you will need to create will of course depend upon what data you have and whether that is already indexed by SharePoint. One good example is to create keywords of all customers from a CRM system, An internal user then can search for "Customer ABC" and be immediately presented with the customer's name (Keyword), the customer contact details (Keyword Description) and a link to the customer BDC profile page or some other location within SharePoint. The ability to make enterprise search ubiquitous in SharePoint means that users can tap in a customer name from anywhere in SharePoint and immediately get important contact information and links to additional information about the entity.

This is one example and the real value is how this works in individual scenarios with real data. The important "take home" point is that we should think about how we can use keywords and best bets to enhance the user experience with information we already have available. This information may reside within SharePoint already, it may exist in the SharePoint index via BDC crawls or it may exist completely outside of SharePoint altogether. Wherever it exists the important thing is that we make best use of it to extend enterprise search functionality and enhance the user experience.


Stefan Goßner: How To: create Keywords and Best Bets for MOSS Search programmatically

Figure 1 Image sourced from


  1. I completley agree. I try to persuade clients to set up a mixed group of business users and someone from IT to meet regularly to review the search usage reports. These reports are extremely valuable in determining how well your search is working and whether people are finding what they came to the site looking for. Out of this analysis it should be possible to add new keywords and best bets that enhance the user's experience of search.

  2. If you are running into issues with adding multiple synonym then you might want to refer to post here

    In same post there is link to another post for doing this using PowerShell