Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

We have a one-to-many relationship between a document library (with 150,000 documents) and a custom list storing additional metadata. We're looking to show the additional metadata from all of the related custom list items on the search results of the FAST Search Center. For example:

Result #1
  Title
  ... search excerpt ...
  Authors: bla  Date: bla  Size: bla
     Metadata from related custom list item #1
     Metadata from related custom list item #2
     Metadata from related custom list item #3

Result #2
  Title
  ... search excerpt ...
  Authors: bla  Date: bla  Size: bla
     Metadata from related custom list item #1

etc.

The options we've come across are, roughly:

  • Add a custom program to the FAST processing pipeline to "flatten" the two lists into one wider, denormalized list
  • Create a custom CoreResultsWebPart that runs an additional query for each search result to pull up the additional metadata for the XSLT to display
  • Add an event receiver when an item is added to the custom list to merge the data from the two lists and output to a third, denormalized, list which would be crawled for the search index

Is there a simpler solution that we've missed that would accomplish this out of the box? If not, how would you suggest we handle this?

We're using SharePoint Server 2010 Enterprise with FAST Search 2010 for SharePoint.

share|improve this question
1  
What was the decision to not include that metadata as part of the items content type and use a structure like that? –  PirateEric Nov 11 '11 at 14:00
    
@PirateEric, the additional metadata is a weird three-leveled category structure, so adding it as a multiple selection lookup wouldn't work the way we need it. –  boflynn Nov 14 '11 at 13:25
add comment

2 Answers 2

up vote 5 down vote accepted

Keeping the structure as is I would go with a custom webpart (override the CoreResults web part) and do this as two queries, instead of a custom pipeline module.

First execute your main query, this will give you the id's for all your metadata. Then execute a second query where you retrieve all the list items and their columns in an OR query. No need to execute this query once per item.

Afterwards it's a matter of merging the xml, before rendering it with xslt.

Code wise it would be similar to what I wrote on my blog about blended search.

share|improve this answer
    
Thanks for the suggestion as well as the excellent example. It's working great. –  boflynn Nov 23 '11 at 13:44
add comment

I would likely do this through a custom web part that can handle the display. What I'm not sure is if you can grab all of the results up front or if you would have to issue a subsequent request for each of the parent items.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.