Indexing Individual List Items on a Portal and Returning them in Search Results

Have you ever done a search, in a SharePoint Portal site, for a list item (announcement, contact, task, etc.) and been annoyed when the search results only bring back a link to the list and not the individual list item? By default this is the way SharePoint works.

For example, lets say I was looking for a contact called "Lion" (Ok, I know I need to work on my sample data) the below screen illustrates the search results from SharePoint:  
Note: Despite the search engine returning a hit on your specific contact, the results only include a link to the list, and not the individual list item.

The reason the product works like this is because of the expectation that a portal site will have many thousands, if not hundreds of thousands, of list items. If these were all included in the search results they could "cloud" the results, making information harder to find, not easier.

The good news is that the product can be configured to return results for list items at almost any granularity you like. For example, below are the results returned for the exact same query, only this time we have told SharePoint to return individual list items:

Note: The results link directly to the item containing my search term.

So, the scene has now been set, exactly how do I do this?

Well follow the below example.

1. Open your portal in the browser
2. Click "Site Settings"
3. Click "Configure Search and Indexing"

Here the instructions will branch based on whether or not you have enabled "Advanced Search Mode". If you haven't follow below:
4. Click "Other Content" on the line that starts with "Exclude and Include"

If you have enabled "Advanced Search Mode":
4. Click on the "Portal Content" link in the "Content Indexes" section
4a. Click on "Manage Rules to Include and Exclude Content"

This should now leave us on the same page:
5. We first need to delete the default Portal rule, as this intentionally prevents indexing “Individial SharePoint List Items”. Click on “Delete” in the dropdown on the entry for “http://<portal> – Included”
** Note this wont stop any content being indexed as there is a duplicate rule above.
6. Click on the "New Rule" link
7. Enter in the path to the Area that contains the list whose list items you would like to index individually followed by "/*", for example: http://<portal>/<area>/*
** Note in my testing this is the granularity for indexing individual items, unfortunately it looks like you can’t do this on a list by list basis.
8. This is the important bit, make sure you check both the below boxes:

9. Click "OK" to save the rule
10. Then kick off an Incremental Crawl.

You should see additional documents creep in, these are the new List items, and you search results will now included individual list items.

Updated: 17/12/04 – Based on feedback in comments that identified some errors.
 – Corrected problem with Blog HTML that inserted an incorrect “"//Lists//” in the example path. (Step 7)
 – Updated to work correctly on sub-areas in the portal (Step 5)
 – Updated to include detail on rules only working at the “Area” level not the List level (Step 7)