En algunas ocasiones, la generación de índices de los catálogos de FullText (population) no llega a completarse. Por tanto, al hacer búsquedas en los catálogos de FullText, la consulta no devuelve todos los registros que debería.

A nivel de SQL Server, cuando miramos las propiedades de los catálogos, algunos o todos no están en estado "population in progress", y tanto los "Item count" como los tamaños de los catálogos no varían durante un tiempo "razonable". El tiempo razonable depende de cuánto tiempo suelen tardan los catálogos para rellenarse. Se puede considerar por ejemplo que si ninguno de los "ítem counts" o de los tamaños de los catálogos con estado "population in progress" no ha variado en 1 hora, el proceso de relleno se ha ‘colgado’.

En estos casos, los logs de aplicación de la máquina donde está SQL Server devuelve mensajes. Debemos mirar los Gather Logs de FullText para ver por qué razón estamos en este estado. Para poder leer los Gather Logs, es necesario utilizar el script gthrlog.vbs. Puedes leer el detalle en el siguiente artículo: How to Use the Gthrlog.vbs Utility to View Gatherer Logs.

Una de la razones por las cuales podemos estar en esta situación es porque el proceso que se encarga de rellenar los índices de los catálogos no tiene memoria suficiente para acabar. Analizando los Gather logs, se puede ver un mensaje como el siguiente:

En SQL Server 2000: Error fetching URL, (800700e9 - No process is on the other end of the pipe. )

En SQL Server 2005: Error fetching URL, (80040d19 - The filtering process was stopped because its memory quota was exceeded. To increase the memory quota of the filtering process, increase the value for the following registry key: HKEY_LOCAL_MACHINE\Software\Microsoft\Search\1.0\Gathering Manager\FilterProcessMemoryQuota. )

El proceso MSSDmn (Microsoft Search Service Daemon) es utilizado para hacer filtrado de texto e imagen. La entrada de registro FilterProcessMemoryQuota determina cuanta memoria es asignada a este proceso. Si el valor especificado no es lo suficientemente grande para hacer el filtrado, no finaliza el llenado de índices de los catálogos de FullText.

Para solventar esta situación, es necesario cambiar el valor de la entrada del registro FilterProcessMemoryQuota. Sin embargo, no hay manera de saber cuál es el valor que debemos especificar. Hay que ir aumentando ese valor, probar de nuevo, hasta que los catálogos se rellenen correctamente. Si vuelve a fallar, es conveniente volver a mirar los GatherLogs para ver si la razón es la misma.

Puedes encontrar más detalles en nuestro artículo siguiente:

PRB: A Full-Text Search May Not Return Any Hits If It Fails to Index a File

 

Espero que esta información te sea útil.

 

Marcos Celada

Ingeniero de Soporte de SQL Server