Artículo original publicado el lunes 3 de diciembre de 2012

Usar un contexto para representar al usuario actual en una búsqueda era algo que se incluyó por primera vez en la búsqueda FAST en SharePoint 2010. Si le interesa saber cómo funcionaba, eche un vistazo a este artículo: http://blogs.technet.com/b/speschka/archive/2009/12/09/using-custom-properties-to-create-a-fast-search-for-sharepoint-2010-user-context.aspx. En SharePoint 2013 no tenemos exactamente la misma característica, se ha reemplazado por lo que se conoce como segmentación del usuario. No voy a detenerme a describir qué son los segmentos de usuario y cómo funcionan, puesto que alguien del equipo de búsqueda ha elaborado ya un artículo realmente minucioso sobre el asunto: http://blogs.msdn.com/b/adaptive_experiences_in_sharepoint_2013/archive/2012/11/14/set-up-user-segmentation-to-drive-adaptive-experiences-in-a-product-catalog-in-sharepoint-2013.aspx. Les animo a que lean esta entrada de blog, donde se explica muy bien lo que son y se incluye un ejemplo de cómo usarlos.

Mi propósito con este artículo no es robar protagonismo o llevarme el mérito, les explicaré qué es lo que he hecho en mi caso. Cuando lea ese artículo, verá que se menciona que hay que escribir un elemento web personalizado para averiguar qué segmentaciones de usuario se deben aplicar a la consulta actual y, después, agregarlos a ella. En la entrada de blog se indica cómo agregar una segmentación de usuario según una propiedad del explorador. Lo que he decidido hacer es escribir un elemento web que agregue una segmentación de usuario según el departamento del usuario actual. Para quienes no lo sepan, cuando se importan perfiles de Active Directory en SharePoint 2013, automáticamente se importan todos los valores de departamento únicos en un almacén de términos especial. Este almacén es genial para realizar algunas personalizaciones basadas en el departamento del usuario actual.

Una pregunta que puede surgir es: "Si voy a mostrar contenido en función del departamento de un usuario, ¿por qué no usar audiencias?". La pregunta es lícita, pero les explicaré la diferencia. Cuando el destino es una audiencia, es simplemente una cuestión de o blanco o negro: o se muestra un elemento web, o no. Sin embargo, con la segmentación de usuario se puede extraer esa información del perfil, o de donde sea, y personalizar el contenido que se muestra. Dado que se usa una regla de consulta, puedo ejecutar una o más consultas extra para un usuario, agregar un resultado promocionado o, incluso, cambiar la clasificación de una consulta (en el caso de que quiera, por ejemplo, tener como destino un determinado contenido para que se muestre más arriba en los resultados de una búsqueda en función del departamento en el que el usuario trabaje). Estas son solo algunas de las fabulosas características de las que se pueden disfrutar en la búsqueda en SharePoint 2013.

Para ayudarle a usar esta característica, adjunto mi proyecto completo de Visual Studio (esto es, el ensamblado de elemento web, la solución y el código fuente compilados) del elemento web que agrega el departamento del usuario actual a la segmentación de usuario. Puede hacer con él lo que quiera: usarlo tal cual o como base para refinar o escribir su propio elemento web para administrar la segmentación de usuario. Existen un par de puntos que me gustaría destacar sobre el uso de la segmentación de usuario y sobre este elemento web cuando lea el artículo que menciono al inicio:

  • Al crear la regla de consulta, se configura de forma predeterminada para consultar el catálogo del sitio de publicación. Si mantiene esta opción, no obtendrá ningún resultado de búsqueda. Elija en su lugar la opción para consultar todos los orígenes. La imagen de la configuración de la regla de consulta de dicho artículo pone esto de manifiesto, pero no lo utiliza. Yo sí lo voy a utilizar, ya que necesitamos cambiar el comportamiento determinado.
  • En el artículo se menciona el uso otro elemento web para mostrar los resultados del contenido que se resalte cuando se use la segmentación de usuario. En este caso (tal y como se indica en el artículo), mi elemento web hereda de ContentBySearchWebPart, de modo que el control se puede usar tanto para definir la segmentación de usuario como para mostrar el contenido resaltado. Lo único que difiere ligeramente de lo que el artículo describe es que, cuando el elemento web se agrega a la página, habrá un valor distinto en la sección de configuración del elemento web. En ella, simplemente establezca la opción "Resultados de consulta proporcionados por" en "Este elemento web".

Y esto es todo, ya está listo para empezar. Con suerte, todos se verán ante algunos escenarios interesantes de segmentación de usuario durante sus búsquedas. Mi escenario en particular al escribir esto fue dirigir una determinada formación especial a los empleados pertenecientes al departamento de ejecutivos. El resultado fue que, cuando encontraban la página en la que se usa mi elemento web, veían un anuncio y un vínculo a formación especial que debían recibir sobre el uso de información privilegiada:

Esta entrada de blog es una traducción. Puede consultar el artículo original en Using User Context (AKA Segmentation) in Search with SharePoint 2013