Windows 7: Indeksowanie wyszukiwania jest zablokowane

13

Kiedy otwieram Opcje indeksowania, mówi:

4 317 pozycji zindeksowanych Indeksowanie w toku. W tym czasie wyniki wyszukiwania mogą nie być kompletne.

Utknął jednak na 4317; nic nie zostało zindeksowane. Co najgorsze, SearchIndexer.exe zajmuje 100% procesora (cóż, 50%, ale mam dwurdzeniowy procesor; zajmuje całą moc przetwarzania, jaką może). Nie powoduje to jednak aktywności dysku twardego.

Próbowałem kliknąć „Rozwiązywanie problemów z wyszukiwaniem i indeksowaniem” u dołu okna Opcje indeksowania, ale nie udało mi się znaleźć żadnego problemu.

Próbowałem też klucza rejestru naprawy, który sugeruje kilka stron internetowych; Zmieniam HKLM \ SOFTWARE \ Microsoft \ Windows Search SetupCompletedS pomyślnie zakończony na 0 i ponownie uruchomiłem komputer i najwyraźniej został naprawiony, ponieważ zmienił się z powrotem na 1, ale ten sam problem nadal występuje.

Zmniejsza to żywotność baterii mojego laptopa i sprawia, że ​​jest naprawdę gorąco, dzięki czemu moi fani cały czas pracują. Musiałem wyłączyć usługę wyszukiwania systemu Windows. Jak mogę to naprawić? Czy muszę po prostu całkowicie sformatować komputer?


Aktualizacja:
próbowałem przebudować kilka razy. Nie ma nic niezwykłego w lokalizacjach, które muszę indeksować, i nie mam żadnych pobrań w toku ani nic podobnego. Nie widzę żadnego powodu, dla którego przestał działać, i zauważyłem, że jest zbyt późno, aby przywrócić system. W tym momencie mam nadzieję, że ktoś zaoferuje jakąś tajną odpowiedź, która rozwiąże problem, a tym samym nagrodę.


Kolejna aktualizacja:
próbowałem ponownie uruchomić usługę, aby pozwolić jej spróbować jeszcze raz. Na początku wydawało się, że jest w porządku (Opcje indeksowania pokazały, że działa ze zmniejszoną prędkością z powodu aktywności użytkownika, a liczba plików rośnie). Chwilę później sprawdziłem i usługa się zatrzymała. Przeglądarka zdarzeń ujawniła kilka takich błędów:

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>

Jeśli masz ten sam błąd i przybyłeś tutaj z wyszukiwarki Google, skomentuj lub dodaj odpowiedź opisującą swoje postępy w tym zakresie, jeśli w ogóle ...

Ricket
źródło
4
Nawiasem mówiąc ... Czy ktoś zna sposób, aby dowiedzieć się, czym jest ten magiczny 4317 przedmiot? Chciałbym wiedzieć, czy jest tylko jeden zniekształcony plik blokujący cały system.
Ricket
Możesz otworzyć plik Windows.edb za pomocą jakiegoś miejsca zwanego ESEDatabaseView tutaj: nirsoft.net/utils/ese_database_view.html
user2924019

Odpowiedzi:

8

Myślę, że możesz mieć rację, gdy mówisz, że istnieje uszkodzony plik, który powoduje jego zawieszenie. Prostym sposobem identyfikacji pliku jest przejście do zakładki Pliki i wyłączenie indeksowania połowy typów plików. Niech biegnie. Albo się kończy, albo przestaje. Jeśli się zatrzyma, wyłącz ponownie połowę. Jeśli zakończy się, wiesz, że zły typ pliku znajduje się w drugiej połowie. Powinno to pozwolić ci zidentyfikować zły typ pliku.

Przejrzyj także indeksowaną listę plików. Typy plików mają różnych dostawców wyszukiwania, takich jak HTML, zwykły tekst i tak dalej. Czy są takie, które wyglądają nie na miejscu, które mogły zostać zainstalowane przez aplikację innej firmy?

Innym pomysłem jest zawieszenie wyszukiwania na 4317 pliku. Następnie uruchom wiersz polecenia. Rodzaj

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

Spowoduje to utworzenie pliku o nazwie newt.txt, w którym będą przechowywane wszystkie pliki i czas ostatniego dostępu do nich. Udostępniono, czyli odczytano, nie zmodyfikowano. Będziesz musiał przeszukać plik za pomocą edytora plików, ale poszukaj ostatnich kilku zmodyfikowanych plików. Jeśli nam się poszczęści, twój zły plik będzie tam. Powodzenia!

Knox
źródło
Dobra wskazówka (drugi pomysł). Czy indeksator nie prowadzi gdzieś indeksów plików? Może to pozwolić nam na pomyślne zaindeksowanie ostatniego pliku i może w ten sposób uzyskać wskazówkę.
mtone
@mtone - Czy można indeksować jeden folder na raz? Zawęzi to wyszukiwanie.
Nifle
@Nifle - tak, rozsądnym rozwiązaniem byłoby również zmniejszenie liczby indeksowanych folderów. W menu Start wpisz „indeksowanie” i kliknij opcje indeksowania. Ten panel zawiera listę indeksowanych lokalizacji.
Knox
@Knox +1 dla pierwszego pomysłu. Sugerujesz wyszukiwanie eliminacyjne [binarne] . A jeśli zmodyfikujesz to, rozumiejąc prawdopodobieństwo wady, i ograniczysz indeksowanie do tych pierwszych, możesz uzyskać znacznie lepsze przyspieszenie niż O (log2 N) .
ElderDelp
4

Znalazłem tę informację na forach Technet

Wygląda na znany błąd:

  1. Komputer ma dwa (lub wiele) napędów lub partycji

  2. Profile użytkowników i system Windows znajdują się na pierwszym dysku lub partycji (załóż literę dysku C :)

  3. Drugi dysk lub partycja ma więcej wolnego miejsca na dysku niż pierwszy (załóż literę D :)

  4. Na komputerze jest uruchamiana sekwencja zadań odświeżania OSD programu ConfigMgr 2007, który wykorzystuje USMT 4 z łączem twardym. Zadanie Przechwyć pliki użytkownika i ustawienia „/” Przechwyć stan użytkownika ”zakończy się powodzeniem, ale zadanie„ Przywróć stan użytkownika ”/„ Przywróć pliki użytkownika i ustawienia „zadanie zakończy się niepowodzeniem.

Rozkład

Aby rozwiązać problem, zmienna OSDStateStorePath musi zostać zmieniona z wartości domyślnej. Podczas korzystania z integracji MDT 2010 / MDT 2010, aktualizacja 1, zmienna musi zostać ponownie zdefiniowana po ustawieniu jej przez skrypt ztiuserstate.wsf w zadaniu „Określ lokalną lub zdalną stację użytkownika”.

Aby mieć pewność, że magazyn stanu zostanie zapisany na tym samym dysku / partycji, na którym jest zainstalowany system Windows i znajdują się profile użytkowników, można użyć zmiennej środowiskowej SystemDrive jako części ścieżki definiującej zmienną OSDStateStorePath.

Jeśli integracja MDT 2010 / MDT 2010 Update 1 nie jest używana , należy zmodyfikować zadanie „Ustaw zmienną sekwencji zadań”, która ustawia zmienną OSDStateStorePath:

  1. W konsoli administracyjnej ConfigMgr 2007 przejdź do węzła Computer Management-> Operating System Deployment-> Task Sequences.

  2. Kliknij prawym przyciskiem myszy dotkniętą sekwencję zadań i wybierz „Edytuj”.

  3. Kliknij Set Local State Locationzadanie. Upewnij się, że zadanie jest Set Task Sequence Variablezadaniem ustawiającym zmienną OSDStateStorePath.

Obok Value:pola tekstowego zmień go z %_SMSTSUserStatePath% na%SystemDrive%\UserState

  1. Kliknij przycisk „OK” lub „Zastosuj”, aby zapisać sekwencję zadań. Jeśli zadanie „Ustaw lokalną lokalizację stanu” nie istnieje, poszukaj zadania „Ustaw zmienną sekwencji zadań”, które ustawia zmienną OSDStateStorePath, a następnie wprowadź powyższe zmiany. W przypadku korzystania z integracji MDT 2010 / MDT 2010, aktualizacja 1, należy dodać nowe zadanie „Ustaw zmienną sekwencji zadań” po zadaniu „Określ lokalną lub zdalną stan użytkownika”, które redefiniuje zmienną OSDStateStorePath:

  2. W konsoli administracyjnej ConfigMgr 2007 przejdź do węzła Computer Management-> Operating System Deployment-> Task Sequences.

  3. Kliknij prawym przyciskiem myszy dotkniętą sekwencję zadań i wybierz „Edytuj”.

  4. Kliknij zadanie „Określ lokalną lub zdalną stan użytkownika”, a następnie przejdź do „Dodaj” -> „Ogólne” -> „Ustaw zmienną sekwencji zadań”. Powinno to utworzyć zadanie „Ustaw zmienną sekwencji zadań” po zadaniu „Określ lokalną lub zdalną stan użytkownika”, ale przed zadaniem „Żądaj magazynu stanów”.

  5. W nowo utworzonym „Ustaw zadanie zmiennej sekwencji zadań”:

    • Obok Name:pola tekstowego wpisz:Set Local State Location
    • Obok Task Sequence Variable:pola tekstowego wpisz OSDStateStorePath
    • Obok Value:pola tekstowego wpisz:%SystemDrive%\StateStore
  6. Kliknij przycisk „OK” lub „Zastosuj”, aby zapisać sekwencję zadań.

Jeśli w kroku 3 zadanie „Określ lokalną lub zdalną stan użytkownika” nie istnieje lub zostało zmienione jego nazwa, poszukaj zadania „Uruchom wiersz poleceń”, które uruchamia skrypt ztiuserstate.wsf, a następnie wykonaj powyższe kroki.

Richard Webb
źródło
4

Najpierw spróbuj odbudować swój indeks. Wyklucz też z indeksowania foldery z tymczasowymi / niezakończonymi pobraniami. Niedokończone pliki są z definicji uszkodzone i mogą zawiesić proces. Kodeki wideo / audio mogą również zawiesić się, jeśli indeksowanie wyszuka w nich metadane.

alternatywny tekst

mtone
źródło
Czy możesz rozwinąć komentarz dotyczący metadanych? Jeśli coś gdzieś to zacina, może pomoże mi to przemyśleć.
Ricket
Indeksowanie próbuje uzyskać metadane, przeglądając pliki. Niektóre typy plików, takie jak pliki filmowe AVI, wymagają kodeków (lub modułów ładujących kontenerów, często nazywanych również kodekami), aby otworzyć te pliki i uzyskać rozdzielczość, długość itp. Ten kodek może się zawiesić, jeśli plik jest uszkodzony. To powiedziawszy, nie spotkałem się z tym problemem do tej pory w Windows 7, ale w XP był to powszechny problem.
mtone
4

Moje wyszukiwanie utknęło z powodu złego pliku Outlook.pst. Uruchomiłem narzędzie do naprawy pst SCANPST.EXEznajdujące się w tym samym katalogu co plik wykonywalny programu Outlook 2007 ( C:\Program Files (x86)\Microsoft Office\Office12na moim komputerze z systemem Windows 7 x64).

wprowadź opis zdjęcia tutaj

glenviewjeff
źródło
1
Plik nazywa się SCANPST.EXE
M. Dudley
2

Czy sprawdziłeś, że twój dysk twardy nie umiera?

Kliknij dysk prawym przyciskiem myszy, otwórz okno dialogowe Właściwości, przejdź do karty Narzędzia i wykonaj kontrolę błędów (przy skanowaniu uszkodzonego sektora).

Pan Fooz
źródło
tak, bardzo dobry pomysł, aby upewnić się, że podstawy działają poprawnie. Sprawdź także dziennik zdarzeń pod kątem błędów systemowych.
Knox
2

Jedno z zadanych tutaj pytań dotyczyło tego, jak sprawdzić, czy SearchIndexer.exe jest zablokowany, powoduje błąd lub zawiesza się, czy też postęp jest nadal. Byłoby również miło zobaczyć, który plik jest obecnie indeksowany.

Oto sposób, aby się dowiedzieć.

Microsoft nie udostępnia narzędzi do przeglądania tego, pliki dziennika utworzone podczas wyszukiwania, takie jak MSS.log (później skopiowane i zmienione pod innymi nazwami, a następnie usunięte) są plikami binarnymi i nie można ich odczytać, chyba że za pomocą specjalnych narzędzi.

Inną alternatywą, którą próbowałem dowiedzieć się, czy wisi on na jednym pliku, czy nie, było uruchomienie Monitora procesów SysInternal . Ustawiam filtr w następujący sposób:

  • uwzględnij proces SearchProtocolHost.exe(uwaga: nie SearchIndexer.exe ),
  • uwzględnij typ zdarzenia File System,
  • wyklucz wszystko z katalogów C:\Windowsi C:\ProgramData,
  • i / lub uwzględnij katalogi, które faktycznie indeksujesz,
  • opcjonalnie ustaw Operację na ReadFile.
  • kliknij Zastosuj lub OK, a następnie kliknij przycisk Przechwytuj w lewym górnym rogu.

Wynikowy widok zdarzeń zawiera wszystkie ReadFileoperacje (i niektóre inne), które są obecnie odczytywane przez usługę Microsoft Search Index.

Powinna to być długa lista ReadFileoperacji, a aktualnie indeksowane pliki znajdują się w kolumnie Ścieżka. Kolumna Wynik powinna pokazywać SUCCESS(jeśli nie, problem występuje), a kolumna Szczegóły powinna stale pokazywać inne przesunięcie (jeśli nie, to zapętla się, i to znowu jest możliwa wskazówka dla przyczyny problemu).

Abel
źródło
1
+1 @Able Link do Sys | nternals nadal działa! Jest to kolejny, który zapewni pełny pakiet
SysInternals