Windows 7: la indexación de búsqueda está atascada

13

Cuando abro las Opciones de indexación, dice:

4,317 artículos indexados Indexación en progreso. Los resultados de búsqueda pueden no estar completos durante este tiempo.

Sin embargo, está atascado en 4.317; No se han indexado más elementos. Lo peor de todo es que SearchIndexer.exe está ocupando el 100% de la CPU (bueno, 50%, pero tengo una CPU de doble núcleo; está tomando toda la potencia de procesamiento que puede). Sin embargo, no está causando actividad en el disco duro.

Intenté hacer clic en "Solucionar problemas de búsqueda e indexación" en la parte inferior de la ventana Opciones de indexación, pero no pude encontrar ningún problema.

También probé la clave de registro de reparación que sugieren varios sitios web; Cambié HKLM \ SOFTWARE \ Microsoft \ Windows Search SetupCompletedSuccessfully a 0 y reinicié la computadora, y aparentemente reparó porque volvió a 1, pero el mismo problema continúa ocurriendo.

Está reduciendo la duración de la batería de mi computadora portátil y haciendo que esté realmente caliente para que mis ventiladores funcionen todo el tiempo. He tenido que deshabilitar el servicio de búsqueda de Windows. ¿Cómo puedo arreglar esto? ¿Necesito simplemente reformatear mi computadora?


Actualización:
he intentado reconstruir un par de veces. No hay nada inusual en las ubicaciones que tengo que indexar, y no tengo ninguna descarga en progreso ni nada de eso. No veo ninguna razón por la que se detuvo, y me di cuenta de que era demasiado tarde para hacer una restauración del sistema. En este punto, espero que alguien ofrezca una respuesta secreta que solucione el problema, por lo tanto, la recompensa.


Otra actualización:
intenté iniciar el servicio nuevamente, solo para dejar que lo intentara nuevamente. Al principio parecía estar bien (las opciones de indexación mostraban que funcionaba a una velocidad reducida debido a la actividad del usuario, y la cantidad de archivos aumentaba). Un rato después lo comprobé y el servicio se detuvo. El visor de eventos reveló algunos errores como este:

Log Name:      Application
Source:        Application Error
Date:          2/1/2010 7:34:23 PM
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      ricky-win7
Description:
Faulting application name: SearchIndexer.exe, version: 7.0.7600.16385, time stamp: 0x4a5bcdd0
Faulting module name: NLSData0007.dll, version: 6.1.7600.16385, time stamp: 0x4a5bda88
Exception code: 0xc0000005
Fault offset: 0x002141ba
Faulting process id: 0x13a0
Faulting application start time: 0x01caa39f2a70ec02
Faulting application path: C:\Windows\system32\SearchIndexer.exe
Faulting module path: C:\Windows\System32\NLSData0007.dll
Report Id: b4f7a7ae-0f92-11df-87fc-e5d65d8794c2
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-02-02T00:34:23.000000000Z" />
    <EventRecordID>10689</EventRecordID>
    <Channel>Application</Channel>
    <Computer>ricky-win7</Computer>
    <Security />
  </System>
  <EventData>
    <Data>SearchIndexer.exe</Data>
    <Data>7.0.7600.16385</Data>
    <Data>4a5bcdd0</Data>
    <Data>NLSData0007.dll</Data>
    <Data>6.1.7600.16385</Data>
    <Data>4a5bda88</Data>
    <Data>c0000005</Data>
    <Data>002141ba</Data>
    <Data>13a0</Data>
    <Data>01caa39f2a70ec02</Data>
    <Data>C:\Windows\system32\SearchIndexer.exe</Data>
    <Data>C:\Windows\System32\NLSData0007.dll</Data>
    <Data>b4f7a7ae-0f92-11df-87fc-e5d65d8794c2</Data>
  </EventData>
</Event>

Si tiene el mismo error y llegó aquí desde una búsqueda en Google, comente o agregue una respuesta que detalle su progreso en esto, si corresponde ...

Ricket
fuente
44
Por cierto ... ¿Alguien sabe una manera de averiguar qué es este mágico artículo 4,317? Me encantaría saber si solo hay un archivo con formato incorrecto que atasca todo el sistema.
Ricket
Puede abrir el archivo Windows.edb usando algún lugar llamado ESEDatabaseView aquí: nirsoft.net/utils/ese_database_view.html
user2924019

Respuestas:

8

Creo que podrías estar en lo correcto cuando dices que hay un archivo dañado que hace que se cuelgue. Una forma cruda de tratar de identificar el archivo es ir a la pestaña de archivos y desactivar la mitad de los tipos de archivos para que no se indexen. Déjalo correr. O se completa o se detiene. Si se detiene, apague la mitad nuevamente. Si se completa, sabe que el tipo de archivo incorrecto está en la otra mitad. Hacer esto debería permitirle identificar el tipo de archivo incorrecto.

Además, mire la lista de archivos indexados. Los tipos de archivos tienen diferentes proveedores de búsqueda, como HTML, texto sin formato, etc. ¿Hay alguna que parezca fuera de lugar, que podría haber sido instalada por alguna aplicación de terceros?

Otra idea es dejar que la búsqueda cuelgue en el archivo 4,317. Luego ejecute un símbolo del sistema. Tipo

CD c:\
DIR /s /TA /O-D >c:\newt.txt

Esto creará un archivo llamado newt.txt que contendrá todos los archivos y la última vez que se accedió a ellos. Accedido, es decir, leído, no modificado. Tendrá que buscar a través del archivo con un editor de archivos, pero busque los últimos archivos que se modificaron. Si tenemos suerte, su archivo malo estará allí. ¡Buena suerte!

Knox
fuente
Buen consejo (la segunda idea). ¿El indexador no mantiene algún tipo de registro de archivos indexados en alguna parte? Podría permitirnos ver el último archivo indexado con éxito, y tal vez obtener una pista de esta manera.
mtone
@mtone - ¿Es posible indexar una carpeta a la vez? Reduciría la búsqueda.
Nifle
@Nifle: sí, también sería una investigación razonable reducir el número de carpetas indexadas. En el menú de inicio, escriba "indexación" y haga clic en las opciones de indexación. Ese panel enumera las ubicaciones que está indexando.
Knox
@Knox +1 para la primera Idea. Está sugiriendo una búsqueda de eliminación [binaria] . Y si lo modifica con su comprensión de la probabilidad de defecto, y limita la indexación a esos primero, entonces puede obtener mucho mejor que la aceleración O (log2 N) .
ElderDelp
4

Encontré esta información en los foros de Technet.

Parece ser un error conocido:

  1. La PC tiene dos (o múltiples) unidades o particiones

  2. Los perfiles de usuario y Windows se encuentran en la primera unidad o partición (suponga la letra de unidad C :)

  3. La segunda unidad o partición tiene más espacio libre en disco disponible que la primera (suponga que la letra de unidad D :)

  4. Se ejecuta una secuencia de tareas de actualización de OSD ConfigMgr 2007 que utiliza USMT 4 con hardlinking en la PC. Luego, la tarea "Capturar archivos de usuario y configuraciones" / "Capturar estado de usuario" tendrá éxito, pero la "Restaurar estado de usuario" / "Restaurar archivos y configuraciones de usuario "la tarea fallará.

Resolución

Para resolver el problema, la variable OSDStateStorePath debe cambiarse de su valor predeterminado. Cuando se utiliza la integración MDT 2010 / MDT 2010 Update 1, la variable debe redefinirse después de que se haya establecido mediante el script ztiuserstate.wsf en la tarea "Determinar el estado del usuario local o remoto".

Para garantizar que State Store se guarde en la misma unidad / partición donde está instalado Windows y se encuentran los perfiles de usuario, la variable de entorno SystemDrive se puede usar como parte de la ruta que define la variable OSDStateStorePath.

Si no se utiliza la integración MDT 2010 / MDT 2010 Update 1 , la tarea "Establecer variable de secuencia de tareas" que establece la variable OSDStateStorePath debe modificarse:

  1. En la consola de administración de ConfigMgr 2007, navegue hasta el nodo Computer Management-> Operating System Deployment-> Task Sequences.

  2. Haga clic derecho en la secuencia de tareas afectada y elija "Editar".

  3. Haz clic en la Set Local State Locationtarea. Asegúrese de que la tarea es una Set Task Sequence Variabletarea que establece la variable OSDStateStorePath.

Junto al Value:campo de texto, cámbielo de %_SMSTSUserStatePath% a%SystemDrive%\UserState

  1. Haga clic en el botón "Aceptar" o "Aplicar" para guardar la secuencia de tareas. Si la tarea "Establecer ubicación de estado local" no existe, busque una tarea "Establecer variable de secuencia de tareas" que establezca la variable OSDStateStorePath, y luego realice los cambios anteriores. Si utiliza la integración MDT 2010 / MDT 2010 Update 1, se debe agregar una nueva tarea "Establecer variable de secuencia de tareas" después de la tarea "Determinar el estado del usuario local o remoto" que redefine la variable OSDStateStorePath:

  2. En la consola de administración de ConfigMgr 2007, navegue hasta el nodo Computer Management-> Operating System Deployment-> Task Sequences.

  3. Haga clic derecho en la secuencia de tareas afectada y elija "Editar".

  4. Haga clic en la tarea "Determinar el estado del usuario local o remoto" y luego vaya a "Agregar" -> "General" -> "Establecer variable de secuencia de tareas". Esto debería crear una tarea "Establecer variable de secuencia de tareas" después de la tarea "Determinar estado de usuario local o remoto" pero antes de la tarea "Solicitar almacenamiento de estado".

  5. En la nueva tarea "Establecer tarea variable de secuencia de tareas":

    • Junto al Name:cuadro de texto, ingrese:Set Local State Location
    • Junto al Task Sequence Variable:cuadro de texto, ingrese en OSDStateStorePath
    • Junto al Value:cuadro de texto, ingrese:%SystemDrive%\StateStore
  6. Haga clic en el botón "Aceptar" o "Aplicar" para guardar la secuencia de tareas.

Si en el Paso 3 la tarea "Determinar el estado del usuario local o remoto" no existe o ha sido renombrada, busque la tarea "Ejecutar línea de comando" que ejecuta el script ztiuserstate.wsf, y luego siga los pasos anteriores.

Richard Webb
fuente
4

Lo primero es lo primero, intente reconstruir su índice. Además, excluya de la indexación de cualquier carpeta con descargas temporales / incompletas. Los archivos sin terminar están, por definición, dañados y podrían colgar el proceso. Los códecs de video / audio también podrían colgarse si la indexación busca metadatos en ellos.

texto alternativo

mtone
fuente
¿Puedes dar más detalles sobre el comentario de metadatos? Si algo, en algún lugar está bloqueando esto, tal vez me ayude a pensar en ello.
Ricket
La indexación intenta obtener metadatos buscando en los archivos. Algunos tipos de archivos, como los archivos de película AVI necesitan códecs (o cargadores de contenedores, a menudo denominados también códecs) para abrir estos archivos y obtener resolución, longitud, etc. Ese códec podría bloquearse si un archivo está dañado. Dicho esto, hasta ahora no he encontrado el problema en Windows 7, pero en XP solía ser un problema común.
mtone
4

Mi búsqueda se atascó debido a un mal archivo Outlook.pst. Ejecuté la utilidad de reparación pst que se SCANPST.EXEencuentra en el mismo directorio que el ejecutable de Outlook 2007 ( C:\Program Files (x86)\Microsoft Office\Office12en mi máquina Windows 7 x64).

ingrese la descripción de la imagen aquí

glenviewjeff
fuente
1
El archivo se llama SCANPST.EXE
M. Dudley
2

¿Has verificado que tu disco duro no se está muriendo?

Haga clic con el botón derecho en la unidad, abra el cuadro de diálogo Propiedades, vaya a la pestaña Herramientas y realice una verificación de error (con escaneo de sector defectuoso).

Señor fooz
fuente
Sí, muy buena idea para asegurarse de que lo básico funcione correctamente. También revise el registro de eventos para errores del sistema.
Knox
2

Una de las preguntas que se hicieron aquí fue sobre cómo ver si SearchIndexer.exe está bloqueado, tiene fallas o está bloqueado, o si todavía hay progreso. Además, sería bueno ver qué archivo se está indexando actualmente.

Aquí hay una manera de averiguarlo.

Microsoft no le proporciona fácilmente herramientas para ver esto, los archivos de registro creados durante la búsqueda, como MSS.log (luego copiados y modificados con otros nombres, y luego eliminados) son archivos binarios y no se pueden leer a menos que con herramientas especiales.

Otra alternativa que traté de averiguar si estaba colgando en un solo archivo o no fue llenar el Monitor de proceso de SysInternal . Configuré el filtro de la siguiente manera:

  • incluye proceso SearchProtocolHost.exe(nota: no SearchIndexer.exe ),
  • incluir tipo de evento File System,
  • excluir cualquier cosa en los directorios C:\Windowsy C:\ProgramData,
  • y / o incluya los directorios que realmente está indexando,
  • opcionalmente establezca Operación en ReadFile.
  • haga clic en Aplicar o en Aceptar y luego haga clic en el botón Capturar arriba a la izquierda.

La vista de eventos resultante le brinda todas las ReadFileoperaciones (y algunas otras) que el servicio de índice de búsqueda de Microsoft está leyendo actualmente.

Debe ser una larga lista de ReadFileoperaciones y los archivos que se indexan actualmente están en la columna Ruta. La columna Resultado debería mostrar SUCCESS(si no, está su problema) y la columna Detalle debería mostrar continuamente un desplazamiento diferente (si no, está en bucle, y eso es nuevamente una posible pista para la causa de su problema).

Abel
fuente
1
+1 @Able ¡El enlace para Sys | nternals todavía funciona! Este es otro que proporcionará la Suite SysInternals completa
ElderDelp