Sharepoint 2010 – Consideraciones para la configuración del servicio de búsqueda

El proceso de configuración del servicio de búsqueda en Sharepoint involucra los siguientes pasos generales:


- Crear una cuenta de usuario, dominio o local, que tenga privilegios de acceso sobre todo el contenido de Sharepoint que se va a incluir en el proceso de indexación y búsqueda.


- Con la cuenta de usuario creada, registrarla como cuenta administrada de Sharepoint.


- Crear una aplicación de servicio de búsqueda, Search Service Application, en donde se crean las bases de datos respectivas y adicionalmente se registra la cuenta de servicio respectiva que debe ser la misma de los puntos anteriores.


- Configurar las fuentes de contenido, content sources, de acuerdo a la configuración de los sitios de Sharepoint.


- Ejecutar una tarea de “full crawling” sobre el contenido y verificar que la base de datos se ha alimentado con los registros encontrados.


Ahora bien, cuando el sitio web es configurado con soporte para autenticación Windows (NTLM) y FBA, y adicional a esto fue configurado con un nombre diferente al configurado por defecto, por ejemplo intranet.midominio.com, el proceso varía. Me encontré con las siguientes novedades:


- Por defecto cuando se configura la aplicación del servicio de búsqueda se agrega como fuente de contenido al URL que se encuenta configurada en la zona AAM como por defecto, en nuestro caso sería intranet.midominio.com.


- Al intentar ejecutar la tarea de “full crawling” sobre esta configuración se puede presentar el siguiente error:


The SharePoint server was moved to a different location. ( Error from SharePoint site: HttpStatusCode Found The request failed with the error message: <html><head><title>Object moved</title></head><body> <h2>Object moved to <a href=“%2f_LAYOUTS%2fSharePoint.POC%2fLogin.aspx%3fReturnUrl%3d%252f_vti_bin%252fsitedata.asmx”>here</a>.</h2> </body></html> –. )


De acuerdo a algunos blogs revisados, para solucionar este problema se debería crear una regla de “crawl” que especifique la página personalizada de inicio de sesión (FBA) y adicionalmente las credenciales de acceso. En mi caso este proceso no funcionó.


- Como alternativa adicional, en otros sitios, proponía extender el sitio con autenticación FBA + NTLM a un sitio que solo soporte NTLM, en mi caso por ejemplo intranet.midominio.com:555 sería el sitio extendido con soporte únicamente para autenticación -NTLM.


- En la configuración de fuentes de contenido especificar este nuevo sitio, intranet.midominio.com:555.


Al configurar estas opciones en efecto la tarea de “crawling” finalizó exitosamente y se indexaron todos los items del sitio, sin embargo, al probar el cuadro de búsqueda que se encuentra en la barra de navegación (superior derecha) y colocar una palabra para buscarla, la página de resultados no mostró resultado alguno.


Para identificar el error procedí a habilitar los logs del servicio de búsqueda en nivel “verbose” y adicionalmente descargar la herramienta ULS Viewer (http://archive.msdn.microsoft.com/ULSViewer).


Al revisar los archivos de log, posterior a hacer algunas pruebas de búsqueda para identificar el error, encontré el siguiente mensaje:



Esto implica que aparentemente no existen “Query Processors” habilitados en la granja de Sharepoint para atender las búsquedas enviadas. En específico un Query Processor dentro de la granja de Sharepoint se habilita iniciando el servicio de “Search Query and Site Settings Service” en la sección “Services on Server”.



Adicionalmente se debe habiliar la característica de colección de sitios “Elementos web de Search Server” en: Acciones del Sitio > Configuración del sitio > Administración de la colección de sitios > Características de la colección de sitios.


Posterior a configurar estas opciones no hubo cambios, el cuadro de búsqueda no presentaba ningún resultado.


Finalmente, en la página de administración de la aplicación del servicio de búsqueda, en la barra lateral izquierda, se encuentra la opción “Server name mappings” (http://altfo.wordpress.com/2010/07/08/this-site-this-list-sharepoint-search-not-working-or-returns-nothing/). En esta opción agregué un item con las siguientes opciones:


- Address for indexing: http://intranet.midominio.com:555


- Address for display in search results: http://intranet.midominio.com


Ejecuté una nueva tarea de “full crwaling” y finalmente funcionó el cuadro de búsqueda y resultados.


 


Otras referencias útiles:


- http://blogs.msdn.com/b/russmax/archive/2010/04/23/search-2010-architecture-and-scale-part-2-query.aspx


- http://blogs.msdn.com/b/russmax/archive/2012/02/15/guide-to-walking-a-sharepoint-2010-search-query-behind-the-scenes.aspx

Sharepoint 2010 – Search Server – Removing the Search Service from the server must be done within the context of a Search Service Application …

En resumen, al tratar de configurar el servicio de búsqueda en una granja de 3 servidores Sharepoint (DB, App, Web FE) el proceso no concluyó exitosamente y se crearon registros huérfanos del proceso. Al tratar de detener el servicio “SharePoint Server Search” se presentó el mensaje de advertencia:



Para lograr detener completamente el servicio:


- Obtener el ID de la aplicación de búsqueda: get-spserviceapplication


- Eliminar la aplicación de Search con el comando: Stsadm -o deleteconfigurationobject -id “id del anterior paso”


- Ingresar al sitio desde la Consola de Administración Central: http://server_sps:puerto/_admin/databasestatus.aspx, revisar si existen base de datos de la aplicación de Search que no fueron configuradas adecuadamente.



- Eliminar los registros desde el command shell: $orphanedDB = Get-SPDatabase | where{$_.Name -eq “MySearchDatabase”} $orphanedDB.Delete()


- Eliminar las bases de datos desde el SQL Server Management Studio.


- Finalmente ejecutar el comando: stsadm -o osearch -action stop


 


 ——– ACTUALIZACIÓN ———– 28/10/2013


Pude percatarme que podría darse el caso de que se mantengan aplicaciones en el sitio SharePoint Web Services relacionados con el servicio SearchService.svc. Para dejar complemetamente limpio el ambiente eliminar aquellos directorios virtuales que contengan el archivo SearchService.svc.