Windows 7: a indexação de pesquisa está bloqueada

13

Quando abro Opções de indexação, ele diz:

4.317 itens indexados Indexação em andamento. Os resultados da pesquisa podem não estar completos durante esse período.

Está preso em 4.317; nenhum item foi indexado. O pior de tudo é que o SearchIndexer.exe está ocupando 100% da CPU (bem, 50%, mas eu tenho uma CPU de núcleo duplo; está ocupando todo o poder de processamento possível). Porém, não está causando atividade no disco rígido.

Tentei clicar em "Solucionar problemas de pesquisa e indexação" na parte inferior da janela Opções de indexação, mas não encontrou nenhum problema.

Eu também tentei a chave de registro de reparo sugerida por vários sites; Altero HKLM \ SOFTWARE \ Microsoft \ Windows Search SetupCompletedSuccessfully para 0 e reiniciei o computador, e ele aparentemente foi reparado porque voltou para 1, mas o mesmo problema continua a ocorrer.

Está reduzindo a vida útil da bateria do meu laptop e tornando-o realmente quente, para que meus fãs funcionem o tempo todo. Eu tive que desativar o serviço de Pesquisa do Windows. Como posso consertar isso? Preciso reformatar o computador com facilidade?


Atualização:
tentei reconstruir algumas vezes. Não há nada incomum nos locais que tenho que indexar e não tenho downloads em andamento ou algo assim. Não vejo nenhuma razão para que tenha parado e notei tarde demais para fazer uma restauração do sistema. Neste ponto, espero que alguém ofereça alguma resposta secreta que resolva o problema, portanto a recompensa.


Outra atualização:
tentei iniciar o serviço novamente, apenas para deixá-lo tentar novamente. Parecia bom no começo (as opções de indexação mostravam o funcionamento em velocidade reduzida devido à atividade do usuário e o número de arquivos estava subindo). Um tempo depois, verifiquei e o serviço havia parado. O visualizador de eventos revelou alguns erros 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>

Se você está tendo o mesmo erro e chegou aqui de uma pesquisa no Google, comente ou adicione uma resposta detalhando seu progresso nisso, se houver ...

Ricket
fonte
4
A propósito ... Alguém sabe como descobrir o que é esse item mágico 4,317? Gostaria de saber se existe apenas um arquivo mal formado bloqueando todo o sistema.
Ricket
Você pode abrir o arquivo Windows.edb usando algum lugar chamado ESEDatabaseView aqui: nirsoft.net/utils/ese_database_view.html
user2924019

Respostas:

8

Eu acho que você pode estar correto quando diz que há um arquivo corrompido que o faz travar. Uma maneira grosseira de tentar identificar o arquivo é acessar a guia Arquivos e desativar a indexação de metade dos tipos de arquivos. Deixe correr. Ou ele é concluído ou para. Se parar, desligue a metade novamente. Se for concluído, você sabe que o tipo de arquivo incorreto está na outra metade. Isso permitirá identificar o tipo de arquivo incorreto.

Além disso, verifique a lista de arquivos indexados. Os tipos de arquivo têm provedores de pesquisa diferentes, como HTML, texto sem formatação e assim por diante. Há algum que pareça deslocado, que possa ter sido instalado por algum aplicativo de terceiros?

Outra idéia é deixar a pesquisa travar no arquivo 4.317º. Em seguida, execute um prompt de comando. Tipo

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

Isso criará um arquivo chamado newt.txt que conterá todos os arquivos e a última vez que eles foram acessados. Acessado, significando lido, não modificado. Você precisará pesquisar o arquivo com um editor de arquivos, mas procurar os últimos arquivos modificados. Se tivermos sorte, seu arquivo ruim estará lá. Boa sorte!

Knox
fonte
Dica legal (a segunda ideia). O indexador não mantém algum tipo de log de arquivos indexados em algum lugar? Poderia nos deixar ver o último arquivo indexado com sucesso e talvez ter uma pista dessa maneira.
mtone 2/02/10
@mtone - É possível indexar uma pasta de cada vez? Reduziria a pesquisa.
Nifle
@ Nifle - sim, também seria uma investigação razoável reduzir o número de pastas indexadas. No menu Iniciar, digite "indexação" e clique nas opções de indexação. Esse painel lista os locais que você está indexando.
Knox
@Knox +1 para a primeira ideia. Você está sugerindo uma pesquisa de eliminação [binária] . E se você modificá-lo com o seu entendimento da probabilidade de defeito e limitar a indexação aos primeiros, poderá obter muito melhor que a aceleração O (log2 N) .
ElderDelp
4

Encontrei essas informações nos fóruns da Technet

Parece ser um bug conhecido:

  1. O PC possui duas (ou várias) unidades ou partições

  2. Os perfis de usuário e o Windows estão localizados na primeira unidade ou partição (assuma a letra da unidade C :)

  3. A segunda unidade ou partição tem mais espaço livre em disco disponível do que a primeira (assuma a letra da unidade D :)

  4. Uma sequência de tarefas de atualização do OSM do ConfigMgr 2007 que usa a USMT 4 com hardlinking é executada no PC. A tarefa Capturar arquivos e configurações do usuário "/" Capturar estado do usuário "será bem-sucedida, mas a tarefa" Restaurar estado do usuário "/" Restaurar arquivos e configurações do usuário " "tarefa falhará.

Resolução

Para resolver o problema, a variável OSDStateStorePath deve ser alterada de seu valor padrão. Ao usar a integração do MDT 2010 / MDT 2010 Update 1, a variável precisa ser redefinida após ter sido definida pelo script ztiuserstate.wsf na tarefa "Determinar o status do usuário local ou remoto".

Para garantir que o State Store seja salvo na mesma unidade / partição em que o Windows está instalado e os perfis de usuário estejam localizados, a variável de ambiente SystemDrive pode ser usada como parte do caminho que define a variável OSDStateStorePath.

Se a integração do MDT 2010 / MDT 2010 Update 1 não estiver sendo usada , a tarefa "Definir variável da sequência de tarefas" que define a variável OSDStateStorePath precisará ser modificada:

  1. No console do administrador do ConfigMgr 2007, navegue até o nó Computer Management-> Operating System Deployment-> Task Sequences.

  2. Clique com o botão direito do mouse na sequência de tarefas afetada e escolha "Editar".

  3. Clique na Set Local State Locationtarefa. Verifique se a tarefa é uma Set Task Sequence Variabletarefa que define a variável OSDStateStorePath.

Ao lado do Value:campo de texto, altere-o de %_SMSTSUserStatePath% para%SystemDrive%\UserState

  1. Clique no botão "OK" ou "Aplicar" para salvar a sequência de tarefas. Se a tarefa "Definir local do estado local" não existir, procure uma tarefa "Definir variável da sequência de tarefas" que defina a variável OSDStateStorePath e faça as alterações acima. Se você estiver usando a integração do MDT 2010 / MDT 2010, atualização 1, uma nova tarefa "Definir variável da sequência de tarefas" precisará ser adicionada após a tarefa "Determinar o local ou o status do usuário remoto" que redefine a variável OSDStateStorePath:

  2. No console do administrador do ConfigMgr 2007, navegue até o nó Computer Management-> Operating System Deployment-> Task Sequences.

  3. Clique com o botão direito do mouse na sequência de tarefas afetada e escolha "Editar".

  4. Clique na tarefa "Determinar Estado do Usuário Local ou Remoto" e vá para "Adicionar" -> "Geral" -> "Definir Variável de Sequência de Tarefas". Isso deve criar uma tarefa "Definir variável da sequência de tarefas" após a tarefa "Determinar o local do usuário local ou remoto", mas antes da tarefa "Solicitar armazenamento de estado".

  5. No recém-criado "Definir Tarefa Variável da Sequência de Tarefas":

    • Ao lado da Name:caixa de texto, digite:Set Local State Location
    • Ao lado da Task Sequence Variable:caixa de texto, insira OSDStateStorePath
    • Ao lado da Value:caixa de texto, digite:%SystemDrive%\StateStore
  6. Clique no botão "OK" ou "Aplicar" para salvar a sequência de tarefas.

Se na etapa 3 a tarefa "Determinar local do usuário local ou remoto" não existir ou tiver sido renomeada, procure a tarefa "Executar linha de comando" que executa o script ztiuserstate.wsf e siga as etapas acima.

Richard Webb
fonte
4

Primeiramente, tente recriar seu índice. Além disso, exclua da indexação qualquer pasta com downloads temporários / incompletos. Arquivos inacabados são por definição corrompidos e podem travar o processo. Os codecs de vídeo / áudio também podem travar se a indexação procurar metadados neles.

texto alternativo

mtone
fonte
Você pode elaborar o comentário de metadados? Se alguma coisa, em algum lugar, está atrapalhando essa coisa, talvez isso me ajude a pensar nisso.
Ricket
A indexação tenta obter metadados procurando nos arquivos. Alguns tipos de arquivos, como arquivos de filme AVI, precisam de codecs (ou carregadores de contêiner, também chamados de codecs) para abrir esses arquivos e obter resolução, comprimento etc. Esse codec pode travar se um arquivo estiver corrompido. Dito isto, ainda não encontrei o problema no Windows 7, mas no XP costumava ser um problema comum.
mtone
4

Minha pesquisa foi interrompida devido a um arquivo Outlook.pst incorreto. Executei o utilitário de reparo pst SCANPST.EXEencontrado no mesmo diretório do executável do Outlook 2007 ( C:\Program Files (x86)\Microsoft Office\Office12na minha máquina Windows 7 x64).

insira a descrição da imagem aqui

glenviewjeff
fonte
1
Arquivo é chamado Scanpst.exe
M. Dudley
2

Você verificou que seu disco rígido não está morrendo?

Clique com o botão direito do mouse na unidade, abra a caixa de diálogo Propriedades, vá para a guia Ferramentas e execute uma verificação de erro (com verificação incorreta do setor).

Mr Fooz
fonte
Sim, é uma ótima idéia para garantir que o básico funcione corretamente. Verifique também se há erros no sistema no log de eventos.
Knox
2

Uma das perguntas feitas aqui foi sobre como verificar se o SearchIndexer.exe está bloqueado, com falha ou travado ou se ainda há progresso. Além disso, seria bom ver qual arquivo está sendo indexado no momento.

Aqui está uma maneira de descobrir.

A Microsoft não fornece ferramentas para visualização imediata, pois os arquivos de log criados durante a pesquisa, como o MSS.log (posteriormente copiado e alterado em outros nomes e excluído), são arquivos binários e não podem ser lidos, a menos que com ferramentas especiais.

Outra alternativa que tentei descobrir se estava pendurada em um único arquivo ou não foi a instalação do Process Monitor do SysInternal . Defino o filtro da seguinte maneira:

  • incluir processo SearchProtocolHost.exe(nota: não SearchIndexer.exe ),
  • incluir tipo de evento File System,
  • excluir qualquer coisa no C:\Windowse C:\ProgramDatadiretórios,
  • e / ou inclua os diretórios que você está realmente indexando,
  • opcionalmente defina Operação como ReadFile.
  • clique em Aplicar ou OK e, em seguida, clique no botão Capturar no canto superior esquerdo.

A exibição do evento resultante fornece todas as ReadFileoperações (e algumas outras) que estão sendo lidas no momento pelo serviço Índice de Pesquisa da Microsoft.

Deve ser uma longa lista de ReadFileoperações e os arquivos atualmente sendo indexados estão na coluna Caminho. A coluna Resultado deve ser exibida SUCCESS(se não houver, existe um problema) e a coluna Detalhes deve mostrar continuamente um deslocamento diferente (se não estiver, está em loop e, novamente, é uma dica possível para a causa do seu problema).

Abel
fonte
1
+1 @Able O link para Sys | nternals ainda funciona! Este é outro que fornecerá o SysInternals Suite completo
ElderDelp 16/18