Reduciendo el tiempo de presentación de contenidos en un Content by Search WebPart

Una de las grandes novedades que trajo SharePoint 2013 fue la renovación de su Arquitectura de búsqueda y consigo una sería de funcionalidades como los Content by Search WebParts, Cross-Site Publishing y Continuous Crawl.

Como sabemos el uso de escenarios de publicación en Portales web de SharePoint basados en el motor de búsqueda tiene muchas ventajas, sin embargo también tiene sus retos. Uno de los principales retos está relacionado al tiempo en que se presentan los contenidos en el Portal. Debido a que los contenidos se presentan en base al motor de búsqueda, el tiempo en que este configurado el rastreo de contenidos es uno de los criterios que determinará el tiempo en que se presentarán los contenidos.

Para este escenario SharePoint 2013 proporciona un mecanismo de rastreo mucho mas eficiente y rápido que rastrea los contenidos en menos tiempo que el tradicional rastreo incremental. Este es el rastreo continuo!

El rastreo continuo por defecto se realiza cada 15 minutos, este se encarga de verificar si existen nuevos contenidos para añadirlos al índice, a diferencia de un rastreo incremental, el rastreo continuo no tiene que esperar a que un rastreo anterior finalice para iniciar uno nuevo, esto permite siempre tener los contenidos mas recientes actualizados en el Portal.

Aún así estos 15 minutos pueden resultar mucho tiempo para los requerimientos de algunas empresas. En este caso es posible reducir el tiempo del rastreo continuo ejecutando los siguientes comandos de PowerShell:

1. Primer obtenemos la propiedad «ContinuousCrawlInterval» para ver el valor actual. Por defecto este es 15 minutos.

2. Ahora establecemos el valor de la propiedad a 5 minutos.

3. Para que se apliquen los cambios debemos ejecutar el método Update.

4. Finalmente verificamos que efectivamente se haya realizado el cambio.

Lo que notaremos ahora es que los resultados de búsqueda se presentan con muchas mas rapidez. Si ejecutamos una búsqueda desde los sitios de búsqueda podremos apreciar eso, sin embargo también nos daremos cuenta de que los Content by Search WebParts no refrescan los datos inmediatamente. Estos se demoran unos 15 minutos aproximadamente, esto debido a que los WebParts también manejan una configuración de Cache de 15 minutos.

Esto también se puede cambiar mediante la ejecución de unos comandos en PowerShell:

Como podemos apreciar, la propiedad «SearchResultsCacheTTL» es la que nos permite expresar en segundos el tiempo en que se manejará en cache el contenido y no se verá refrescado. En este caso lo configuré para 5 minutos.

Y listo! a través de la ejecución de estos comandos podemos presentar la información de manera mas rápida. Sin embargo, es importante tomar en cuenta que tanto el tiempo destinado para el continuous crawl como el tiempo empleado para el cache al verse reduciendo, consumen mas recursos de los servidores tanto Web Front End (Por el manejo del cache) como los servidores de la topología de búsqueda.

Item Scheduling y Content by Search WebParts

En un artículo anterior escribí acerca de la capacidad de Item Scheduling y sus beneficios en cuanto a la gestión de la publicación en Portal web en Internet (http://geeks.ms/blogs/marchena/archive/2016/01/08/empleando-item-scheduling-en-bibliotecas-documentales-de-sharepoint-2013.aspx).

Como sabemos SharePoint 2013 trajo múltiples funcionalidades para optimizar la implementación de Portales web en Internet, entre estas podemos mencionar a los Portales basados en Cross-site Publishing, el uso de Content by Search WebParts y continuous crawl.

Entonces, será posible aprovechar la capacidad de Item Scheduling (funcionalidad disponible desde SharePoint 2007) en Portales modernos basados en Cross-site publishing y content by search webparts?

Esto claro que es posible. Como sabemos el Item Scheduling permite manejar los estados de publicación de un documento, entonces un documento al estar en estado Borrador, En Espera o Programado no podrá ser visto por un usuario anónimo o un usuario lector. Sin embargo, un documento en estado Aprobado si puede ser visto por un usuario anónimo o lector.

Recordemos también que el motor de búsqueda únicamente rastrea aquellos documentos que se encuentren con estado Aprobado, en ese sentido es totalmente posible complementar la funcionalidad de Item Scheduling con los Content by Search WebParts.

A continuación mostrará como configurar este escenario. El resultado final debería ser algo como esto:

1. Primero debemos seguir los pasos descritos en el siguiente artículo (http://geeks.ms/blogs/marchena/archive/2016/01/08/empleando-item-scheduling-en-bibliotecas-documentales-de-sharepoint-2013.aspx). Estos son los pasos fundamentales.

2. Ahora, después de haber ejecutado un Full Crawl iremos al esquema de búsqueda desde el Search Service Application y buscaremos las propiedades rastreadas ows_q_DATE_PublishingStartDate y ows_q_DATE_PublishingExpirationDate.

Nota: Puede que estas propiedades rastreadas no se muestren. Si no se muestran en el siguiente punto se explicará como resolver este inconveniente.

3. En el caso de que no se muestren las propiedades rastreadas esto es debido a que al menos un documento debe tener los datos llenos y este documento debe estar marcado como Aprobado.

4. Ejecutamos un Full Crawl nuevamente.

5. Ahora si podremos apreciar que se crearon las propiedades rastreadas correctamente. 

 

6. Debido a que la Fecha de inicio programada y la Fecha de finalización programada las queremos utilizar para refinar los resultados y ordenarlos. Vamos a crear a continuación unas propiedades administradas nuevas.

Primero vamos a crear la propiedad administrada SPSFechaInicioPublicación, este será de tipo Fecha y hora. Así mismo marcar los checks Permite búsquedas, Consultable, Se puede recuperar.

 

 7. En Restringible seleccionar Sí: activa. y en Se puede ordenar seleccionar Sí: activa. Así mismo marcar Caja fuerte.

8. Ahora debemos seleccionar la propiedad rastreada ows_q_DATE_PublishingStartDate que es la asociada al campo de Fecha de inicio programada.

9. Se puede apreciar que se agregó correctamente.

10. Hacemos el mismo procedimiento para la propiedad Administradad SPSFechaFinPublicacion. La configuración será la misma a excepción de la propiedad rastreada a la cual mapearemos. 

11. Mapearemos a la propiedad rastreada ows_q_DATE_PublishingExpirationDate, esta esta asociada al campo Fecha de finalización programada.

12. Podemos apreciar que se asoció correctamente.

13. Ejecutamos un Full Crawl para ver los cambios aplicados. 

14. Y finalmente podremos configurar nuestro refinamiento con las propiedades administradas antes creadas. No tenemos que hacer nada especial sobre nuestro content by search WebPart ya que por defecto solo muestra los contenidos aprobados.

Nota: Debido a que los resultados en el Content by Search WebPart se muestran en base a la frecuencia del rastreo y a la configuración de cache, el momento en que se presentarán los resultados o dejarán de presentarse tendrá una diferencia de aproximadamente unos 15 minutos. Esto se puede reducir, si queremos reducir esta diferencia, debemos seguir los pasos descritos en el siguiente artículo: http://geeks.ms/blogs/marchena/archive/2016/01/08/reduciendo-el-tiempo-de-presentaci-243-n-de-contenidos-en-un-content-by-search-webpart.aspx 

 

Empleando Item Scheduling en bibliotecas documentales de SharePoint 2013

En Sistemas de gestión de contenidos para Portales web en Internet, uno de los principales requerimientos es la gestión adecuada del flujo de publicación de contenidos de tal manera que se pueda controlar de manera eficiente la creación, revisión y aprobación de contenidos. Dentro de estas necesidades se encuentra el de la gestión de la publicación y des-publicación automática de contenidos.

Afortunadamente SharePoint 2013 cuenta con una capacidad conocida como el Item Scheduling. Esta funcionalidad permite controlar la publicación y des-publicación de manera automática tanto en Páginas web como en documentos en bibliotecas documentales.

En el siguiente artículo pasaré a detallar los pasos necesarios para habilitar la capacidad de Item Scheduling en bibliotecas documentales:

Lo primer es tener una colección de sitios desde donde crearemos las bibliotecas documentales que almacenarán los documentos a ser presentados desde nuestro Portal web. En este caso yo dispongo de una colección de sitios que emplea la plantilla de Centro documental. 

Habilitación de Features

1. La capacidad de Item Scheduling está habilitada por defecto para Site collections del tipo «Portal de publicación«. Debido a que nuestro site collection es de tipo «Centro Documental«, debemos habilitar el Publishing Feature. Para esto vamos a Configuración del sitio.

2. Clic en Características de la colección de sitios.

 

3. Activar el Feature «Infraestructura de publicación de SharePoint Server«.

4. Lo mismo debe hacer a nivel del sitio. Para esto damos clic en Administrar las características del sitio

5. Activar el Feature «Publicación de SharePoint Server«.

 

Configuración de Tipo de contenido

1. Ahora debemos habilitar el tipo de contenido a ser usado por nuestras bibliotecas documentales. Vamos a Tipos de contenido de sitio.

 

2. Creamos un tipo de contenido basado en el Tipo de contenido Primario «Documento«. En mi caso, mi tipo de contenido se llama Documentos IWDEMO.

3. Agregaremos las columnas «Fecha de inicio programada» y «Fecha de finalización programada» a nuestro tipo de contenido. Estas columnas se habilitan al momento de Activar los Features de publicación.

4. Verificamos que las columnas se hayan creado correctamente.

 Configuración de biblioteca de documentos

1. Ahora configuramos nuestra biblioteca de documentos. En mi caso cree una biblioteca de nombre «Procedimientos«.

2. En las opciones de Configuración damos clic en Configuración avanzada.

3. Marcamos en ¿Desea permitir la administración de tipos de contenido?

 

4. Agregamos el tipo de contenido que habíamos creado. 

5. El tipo de contenido se mostrará en la lista de tipos de contenido que tiene la biblioteca de documentos.

6. Eliminamos el tipo de contenido «Documento«, ya que no lo vamos a utilizar.

7. Podemos verificar que ahora solo se muestra nuestro tipo de contenido.

8. Ahora debemos configurar las versiones, damos clic en Configuración de versiones.

 

9. Marcamos en ¿Requerir aprobación de contenido para los elementos enviados? y en Historial de versiones de Documentos seleccionar Crear versiones principales y secundarias (borradores). Finalmente clic en Aceptar.

10. Finalmente debemos habilitar el Item Scheduling, para esto damos clic en Administrar programación de elementos.

11. Marcamos el check Habilitar la programación de elementos de esta lista y clic en Aceptar.

 Verificando configuración de Timer Jobs

El proceso de publicación y des-publicación automática esta basado en 2 timer Jobs. Por lo tanto debemos verificar que estos estén habilitados.

1. Verificamos que el timer job «Aprobación programada» se encuentra habilitado. Este timer job se ejecuta cada minuto.

 

2. Verificamos que el timer job «Eliminación de publicación programada» se encuentra habilitado. Este timer job también está configuración para ejecutarse cada minuto.

 Publicación de documentos

Ahora debemos verificar que la capacidad de Item Scheduling esté funcionando correctamente.

1. Cargamos un documentos a la biblioteca de documentos de «Procedimientos«. Completamos los metadatos, para esto debemos especificar la Fecha de inicio programada para cual puede ser Inmediatamente o a una fecha y hora exacta. Para el caso de la Fecha de finalización programada esta puede ser Nunca o puede ser una fecha y hora exacta.

 

2. Al completar los datos veremos que el documento se pone en Estado «Borrador«, esto significa que el documento se encuentra en su versión menor.

3. Debemos proceder a publicar el documento a su versión mayor, para esto seleccionamos al documento y desde el Ribbon ubicamos el botón Publicar y le damos clic.

 

4. En la siguiente ventana podemos especificar un comentario y damos clic en Aceptar.

5. Ahora el documento se encontrará en Estado «En Espera«, esto quiere decir que se encuentra pendiente de Aprobación.

6. El rol de Aprobador deberá seleccionar el documento y en el Ribbon dar clic en Aprobar o rechazar.

7. A continuación debe dar clic en Aprobado y clic en Aceptar.

8. Si es en la Fecha de inicio programada se especificó una fecha en el futuro, entonces el Estado de aprobación cambiará a «Programado«. Si es que la Fecha de inicio programada era inmediatamente, entonces se mostrará el Estado de aprobación como «Aprobado«.

 9. Cuando se cumpla la Fecha de inicio programada, automáticamente el Estado cambiará de Programado a Aprobado. Esto se da mediante el timer job que se ejecuta cada minuto.

Nota: Al estar el documento en Estado Aprobado esto quiere decir que todos los lectores o usuarios anónimos podrán visualizarlo (Publicación automática).

 10. Si es que se cumplió la Fecha de Finalización programada, entonces el Estado del documento cambiará de Aprobado a Borrador. Esto quiere decir que los lectores o usuarios anónimos no podrán ver el documento (Des-publicación automática).

 Y listo!

Como pueden apreciar, la capacidad de Item Scheduling trae muchos beneficios en cuanto a la gestión de la publicación de contenidos tanto de páginas web como documentos. Espero que haya sido de mucha utilidad. 

Como recuperar archivos de índice dañados/corruptos en una topología de búsqueda

En una topología de búsqueda de SharePoint 2013 uno de los componentes críticos para la ejecución de búsquedas y/o para presentar información en los Content by Search WebParts y Search Results WebParts es el índice de búsqueda.

Desde la página de Administración del Search Service Application podemos constantemente monitorear la salud de nuestra topología de búsqueda. Podremos detectar un problema con el componente de índice si es que se presenta un ícono amarillo de warning como se puede apreciar en la siguiente imagen:

Cuando el índice de búsqueda presenta un ícono de warning esto puede estar relacionado a 2 temas:

a) El disco de índice esta lleno por lo que no es posible seguir almacenando información ahi. Esto genera que un Full crawl o incremental crawl se quede detenido por siempre hasta que el tema se resuelva.

b) Los archivos de índice de uno nodo particular están corruptos. Esto puede deberse a una manipulación indebida de estos archivos, algún problema con disco o algún virus.

Para resolver estos problemas seguir los pasos descritos a continuación:

1. En el Search Service Application dar clic en Restablecer índice

2. Clic en Restablecer ahora.

3. Se restablecer el índice (Se limpia por completo).

4. Podremos apreciar que la topología ya se muestra correctamente sin ningún warning. 

5. Finalmente debe ejecutar un Full crawl para poder llenar nuevamente nuestro índice.

IMPORTANTE:

Si el problema era asociado a espacio en disco, entonces previamente debemos hacer un dimensionamiento adecuado del índice y aprovisionar el espacio necesario.

Si el problema tiene que ver con corrupción de archivos es importante diagnosticar la causa raíz (Si fue por virus aplicar antivirus, Si fue problema de disco o manipulación manual tomar las acciones respectivas).