Una de las características clave de las búsquedas en SharePoint 2010 es el alto grado de personalización que se puede conseguir en las mismas, tanto en la experiencia de usuario (presentación de resultados y realización de búsquedas), como en las posibilidades que brinda la API subyacente para construir auténticos verticales de búsquedas sobre el motor de búsquedas de la plataforma. En este primer post vamos a ver que posibilidades tenemos a la hora de personalizar los resultados de las búsquedas. A nivel de presentación las posibilidades pasan por:
-
Decidir si se utiliza el centro de búsquedas por defecto de SharePoint o no. Lo más adecuado pasa por definir un centro de búsquedas personalizado usando las siguientes opciones:
-
Creando una colección de sitios o un sitio usando la plantilla de centro de búsquedas.
-
Crear una página que actúe como centro de búsquedas. En dicha página añadiremos las WebParts de búsquedas necesarias: “Caja de búsqueda”, “Panel de refinamiento”, “WebPart de resultados”, etc. Un ejemplo de esta idea se puede ver en el siguiente artículo: http://geeks.ms/blogs/ciin/archive/2012/03/26/sharepoint-online-creaci-243-n-de-un-centro-de-b-250-squedas-personalizado.aspx
-
-
Personalizar las WebParts de búsquedas utilizando para ello transformaciones XSLT que se definan en archivos XSL. En este sentido, se pueden personalizar por ejemplo el panel de refinamiento o la WebPart de resultados de SharePoint 2010.
-
Extender mediante desarrollo las WebParts de búsquedas que en SharePoint 2010 no son selladas, de manera que se pueden crear nuevas WebParts que hereden de las WebParts de búsqueda existentes.
Si nos centramos en las posibilidades de personalización de las WebParts de búsqueda:
WebPart Searchbox
La WebPart de definición de una búsqueda (SearchBox) es extensible de forma que podemos crear nuestras propias WebParts que extiendan la anterior para simplificar por ejemplo la realización de las búsquedas de tipo Wildcard sin obligar a qué el usuario tenga que introducir un carácter *, aplicar una ordenación diferente especificando una clausula OrderBy. Dos ejemplos en esta línea son los siguientes:
- OrderBy estático:
- Wildcard search WebPart para SharePoint 2007 y SharePoint 2010:
Extesión de la WebPart CoreResults
La WebPart CoreResults es extensible, siendo la opción recomendada en escenarios de personalización en los que se requiera por ejemplo aplicar ciertos criterios de ordenación o cambiar la presentación de las búsquedas utilizando un renderizado diferente al propio de CoreResultsWebParts. Ejemplos en esta línea son los siguientes:
-
Personalizar la ordenación:
-
Uso de SPGridView para mostrar los resultados y facilitar ordenación y filtrado en los resultados:
Ordenación de los resultados de búsqueda
Los resultados obtenidos a partir de una búsqueda se pueden ordenar en base a unos criterios de búsqueda que se especifiquen. Las posibilidades para aplicar ordenación personalizada pasan por:
-
Sobre el conjunto de resultado devuelto, aplicar la ordenación correspondiente como se sugiere en:
-
Jugar de nuevo con la extensibilidad de la CoreResults WebPart que permite añadir propiedades a la ordenación:
-
Como se puede usar la API del motor de búsquedas y la sintaxis de realización de consultas, podemos construir al vuelo las consultas a enviar al motor de forma que los resultados se devuelvan como se necesiten:
Personalización del panel de refinamiento
El panel de refinamiento de resultados de las búsquedas es personalizable mediante dos técnicas diferenciadas:
-
Vía transformaciones XSLT:
-
Extendiendo el panel de renfinamiento mediante desarrollo:
Personalización de la paginación de los resultados de búsqueda
Dentro de las posibilidades de personalización de la paginación de los resultados de búsqueda tenemos:
-
Vía transformaciones XSLT, no aplicada a la WebPart de paginación puesto que es conocido que da problemas, sino añadiéndolas en el XSL de la WebPart Core Results:
-
Realizar la paginación en una WebPart personalizada de CoreResults aprovechando que tenemos un control total de como se visualizan los resultados: