En ocasiones el formato o los datos en el que se presentan los resultados de la búsqueda no satisfacen las necesidades del cliente.
La propiedad XSL del Web Part que muestra estos resultados (“Search Core Results”), permite modificar la forma en la que se muestran. Podéis ver más información aquí: http://msdn.microsoft.com/en-us/library/ms584121.aspx.
En este post encontré un ejemplo muy útil http://lanouse.spaces.live.com/Blog/cns!ECD2400FABABC2E2!334.entry. Se trata de mostrar un enlace al formulario de visualización del elemento si el resultado de la búsqueda es un documento de una biblioteca.
En resumen, los pasos a seguir son:
1) Crear una nueva propiedad administrada que haga referencia al id del elemento (ows_id)
2) Añadir nuestra nueva propiedad administrada a la lista de columnas que se podrán utilizar en el Web Part de resultados de la búsqueda
3) Modificar el XSL para que muestre el enlace al elemento (si se trata de un documento) utilizando el id.
Tan solo una modificación del post referenciado: si las bibliotecas tienen carpetas el enlace al formulario de visualización no se forma correctamente. Este es el XSL que incluye la modifcación:
<xsl:template match="Result">
<xsl:variable name="id" select="id"/>
<xsl:variable name="url" select="url"/>
<span class="srch-Icon">
<a href="{$url}" id="{concat('CSR_IMG_',$id)}" title="{$url}">
<img align="absmiddle" src="{imageurl}" border="0" alt="{imageurl/@imageurldescription}" />
</a>
</span>
<script type="text/javascript">
function GetUrlDispForm(strUrl,siteUrl, idEle)
{
siteUrl = siteUrl.toLowerCase() + "/";
strUrl = strUrl.toLowerCase().replace(siteUrl,"");
siteUrl += strUrl.substring(0,strUrl.indexOf("/"));
siteUrl += "/Forms/DispForm.aspx?ID=";
siteUrl += idEle;
siteUrl += "&Source=" + document.location.href;
window.navigate(siteUrl);
}
</script>
<span class="srch-Title">
<a href="{$url}" id="{concat('CSR_',$id)}" title="{$url}">
<xsl:choose>
<xsl:when test="hithighlightedproperties/HHTitle[. != '']">
<xsl:call-template name="HitHighlighting">
<xsl:with-param name="hh" select="hithighlightedproperties/HHTitle" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="title"/>
</xsl:otherwise>
</xsl:choose>
</a>
<xsl:if test="isdocument=1">
<img align="absmiddle" src="/_layouts/images/slideShow.gif" border="0" alt="Ver Propiedades" />
<a>
<xsl:attribute name="href">
javascript:GetUrlDispForm('<xsl:value-of select="url"/>','<xsl:value-of select="sitename"/>',<xsl:value-of select="idelemento"/>);
</xsl:attribute>
Ver Propiedades
</a>
</xsl:if>
</span>
<xsl:choose>
<xsl:when test="$IsThisListScope = 'True' and contentclass[. = 'STS_ListItem_PictureLibrary'] and picturethumbnailurl[. != '']">
<div style="padding-top: 2px; padding-bottom: 2px;">
<a href="{$url}" id="{concat('CSR_P',$id)}" title="{title}">
<img src="{picturethumbnailurl}" alt="" />
</a>
</div>
</xsl:when>
</xsl:choose>
<div class="srch-Description">
<xsl:choose>
<xsl:when test="hithighlightedsummary[. != '']">
<xsl:call-template name="HitHighlighting">
<xsl:with-param name="hh" select="hithighlightedsummary" />
</xsl:call-template>
</xsl:when>
<xsl:when test="description[. != '']">
<xsl:value-of select="description"/>
</xsl:when>
</xsl:choose>
</div >
<p class="srch-Metadata">
<span class="srch-URL">
<a href="{$url}" id="{concat('CSR_U_',$id)}" title="{$url}" dir="ltr">
<xsl:choose>
<xsl:when test="hithighlightedproperties/HHUrl[. != '']">
<xsl:call-template name="HitHighlighting">
<xsl:with-param name="hh" select="hithighlightedproperties/HHUrl" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="url"/>
</xsl:otherwise>
</xsl:choose>
</a>
</span>
<xsl:call-template name="DisplaySize">
<xsl:with-param name="size" select="size" />
</xsl:call-template>
<xsl:call-template name="DisplayString">
<xsl:with-param name="str" select="author" />
</xsl:call-template>
<xsl:call-template name="DisplayString">
<xsl:with-param name="str" select="write" />
</xsl:call-template>
<xsl:call-template name="DisplayCollapsingStatusLink">
<xsl:with-param name="status" select="collapsingstatus"/>
<xsl:with-param name="urlEncoded" select="urlEncoded"/>
<xsl:with-param name="id" select="concat('CSR_CS_',$id)"/>
</xsl:call-template>
</p>
</xsl:template>