Windows 7: Pengindeksan pencarian macet

13

Ketika saya membuka Opsi Pengindeksan, dikatakan:

4.317 item diindeks Pengindeksan sedang berlangsung. Hasil pencarian mungkin tidak lengkap selama ini.

Namun macet di 4.317; tidak ada lagi item yang diindeks. Terburuk dari semua, SearchIndexer.exe mengambil 100% CPU (well, 50%, tapi saya punya CPU dual core; itu mengambil semua daya pemrosesan yang bisa). Itu tidak menyebabkan aktivitas hard drive.

Saya mencoba mengklik "Pecahkan masalah pencarian dan pengindeksan" di bagian bawah jendela Opsi Pengindeksan, tetapi tidak dapat menemukan masalah.

Saya juga telah mencoba kunci registri perbaikan yang disarankan beberapa situs web; Saya mengubah HKLM \ SOFTWARE \ Microsoft \ Windows Search SetupCompletedSuccessfully ke 0 dan me-restart komputer, dan tampaknya diperbaiki karena kembali ke 1, tetapi masalah yang sama terus terjadi.

Ini mengurangi masa pakai baterai laptop saya dan membuatnya sangat panas sehingga penggemar saya berjalan setiap saat. Saya harus menonaktifkan layanan Pencarian Windows. Bagaimana saya bisa memperbaikinya? Apakah saya hanya perlu memformat ulang komputer saya?


Pembaruan:
Saya sudah mencoba membangun kembali beberapa kali. Tidak ada yang aneh tentang lokasi yang harus saya indeks, dan saya tidak memiliki unduhan yang sedang berlangsung atau semacamnya. Saya tidak melihat alasan mengapa itu berhenti, dan saya perhatikan sudah terlambat untuk melakukan pemulihan sistem. Pada titik ini, saya berharap seseorang akan menawarkan beberapa jawaban rahasia yang akan memperbaiki masalah, demikian hadiahnya.


Pembaruan lain:
Saya mencoba memulai layanan lagi, hanya untuk membiarkannya mencoba lagi. Pada awalnya tampak baik-baik saja (Opsi Pengindeksan menunjukkannya beroperasi pada kecepatan rendah karena aktivitas pengguna, dan jumlah file naik). Beberapa saat kemudian saya memeriksa, dan layanan telah berhenti. Penampil acara mengungkapkan beberapa kesalahan seperti ini:

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>

Jika Anda mengalami kesalahan yang sama dan tiba di sini dari pencarian Google, silakan komentar atau tambahkan jawaban yang merinci kemajuan Anda tentang hal ini, jika ...

Ricket
sumber
4
Ngomong-ngomong ... Apakah ada yang tahu cara untuk mencari tahu apa item ke-4.317 ajaib ini? Saya ingin tahu jika hanya ada satu file yang rusak di seluruh sistem.
Ricket
Anda dapat membuka file Windows.edb menggunakan beberapa tempat yang disebut ESEDatabaseView di sini: nirsoft.net/utils/ese_database_view.html
user2924019

Jawaban:

8

Saya pikir Anda bisa benar ketika Anda mengatakan bahwa ada file yang rusak yang menyebabkannya hang. Cara kasar mencoba mengidentifikasi file adalah dengan masuk ke tab file dan mematikan setengah jenis file dari yang diindeks. Biarkan berjalan. Entah itu selesai atau berhenti. Jika berhenti, matikan lagi. Jika sudah selesai, Anda tahu jenis file yang buruk ada di setengah lainnya. Melakukan ini akan memungkinkan Anda untuk mengidentifikasi jenis file yang buruk.

Juga, lihat daftar file yang diindeks. Jenis file memiliki penyedia pencarian yang berbeda, seperti HTML, teks biasa dan sebagainya. Apakah ada yang terlihat tidak pada tempatnya, yang mungkin telah diinstal oleh beberapa aplikasi pihak ketiga?

Gagasan lain adalah membiarkan pencarian menggantung pada file 4.317. Kemudian jalankan prompt perintah. Tipe

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

Ini akan membuat file bernama newt.txt yang akan menampung semua file dan terakhir kali diakses. Diakses, artinya dibaca, tidak dimodifikasi. Anda harus mencari file dengan editor file tetapi mencari beberapa file terakhir yang dimodifikasi. Jika kami beruntung, file buruk Anda akan ada di sana. Semoga berhasil!

Knox
sumber
Tip bagus (ide kedua). Bukankah pengindeks menyimpan semacam log file diindeks di suatu tempat? Itu bisa membiarkan kita melihat file terakhir berhasil diindeks, dan mungkin mendapatkan petunjuk dengan cara ini.
mtone
@ nada - Apakah mungkin untuk mengindeks satu folder sekaligus? Itu akan mempersempit pencarian.
Nifle
@Nifle - ya, itu juga akan menjadi penyelidikan yang masuk akal untuk mengurangi jumlah folder yang diindeks. Di bawah menu mulai, ketik "pengindeksan" dan klik pada opsi pengindeksan. Panel itu mencantumkan lokasi yang Anda indeks.
Knox
@Knox +1 untuk Ide pertama. Anda menyarankan pencarian eliminasi [biner] . Dan jika Anda memodifikasinya dengan pemahaman Anda tentang kemungkinan cacat, dan membatasi pengindeksan untuk yang pertama, maka Anda bisa mendapatkan jauh lebih baik daripada percepatan O (log2 N) .
ElderDelp
4

Saya menemukan informasi ini di forum Technet

Tampaknya menjadi bug yang dikenal:

  1. PC memiliki dua (atau beberapa) drive atau partisi

  2. Profil pengguna dan Windows terletak di drive atau partisi pertama (asumsikan huruf drive C :)

  3. Drive atau partisi kedua memiliki ruang disk kosong lebih banyak daripada yang pertama (asumsikan huruf drive D :)

  4. ConfigMgr 2007 OSD Refresh Urutan Tugas yang menggunakan USMT 4 dengan hardlinking dijalankan pada PC Kemudian tugas Tangkap File Pengguna dan Pengaturan "/" Status Tangkap Pengguna "akan berhasil, tetapi tugas" Kembalikan Status Pengguna "/" Kembalikan File Pengguna dan Pengaturan "Tugas akan gagal.

Resolusi

Untuk mengatasi masalah tersebut, variabel OSDStateStorePath harus diubah dari nilai standarnya. Saat menggunakan integrasi Pembaruan 1 MDT 2010 / MDT 2010, variabel harus didefinisikan ulang setelah ditetapkan oleh skrip ztiuserstate.wsf di tugas "Menentukan Lokal atau Remote UserState" tugas.

Untuk memastikan bahwa State Store disimpan ke drive / partisi yang sama di mana Windows diinstal dan profil pengguna berada, variabel lingkungan SystemDrive dapat digunakan sebagai bagian dari jalur yang mendefinisikan variabel OSDStateStorePath.

Jika integrasi MDT 2010 / MDT 2010 Pembaruan 1 tidak digunakan , tugas "Tetapkan Urutan Tugas Variabel" yang menetapkan variabel OSDStateStorePath perlu diubah:

  1. Di konsol Admin ConfigMgr 2007, navigasikan ke simpul Computer Management-> Operating System Deployment-> Task Sequences.

  2. Klik kanan pada Urutan Tugas yang terpengaruh dan pilih "Edit".

  3. Klik pada Set Local State Locationtugas. Pastikan bahwa tugas tersebut adalah Set Task Sequence Variabletugas yang menetapkan variabel OSDStateStorePath.

Di sebelah Value:bidang teks, ubah dari %_SMSTSUserStatePath% menjadi%SystemDrive%\UserState

  1. Klik pada tombol "OK" atau "Terapkan" untuk menyimpan urutan tugas. Jika tugas "Setel Lokasi Keadaan Lokal" tidak ada, maka cari tugas "Setel Urutan Urutan Tugas" yang menetapkan variabel OSDStateStorePath, dan kemudian buat perubahan di atas. Jika menggunakan MDT 2010 / MDT 2010 Pembaruan 1 integrasi, maka tugas "Set Tugas Urutan Variabel" baru perlu ditambahkan setelah tugas "Tentukan Lokal atau Remote UserState" yang mendefinisikan ulang variabel OSDStateStorePath:

  2. Di konsol Admin ConfigMgr 2007, navigasikan ke simpul Computer Management-> Operating System Deployment-> Task Sequences.

  3. Klik kanan pada Urutan Tugas yang terpengaruh dan pilih "Edit".

  4. Klik pada tugas "Tentukan Lokal atau Remote UserState" dan kemudian pergi ke "Tambah" -> "Umum" -> "Setel Urutan Urutan Tugas". Ini harus membuat tugas "Tetapkan Urutan Urutan Variabel" setelah tugas "Tentukan UserState Lokal atau Jarak Jauh" tetapi sebelum tugas "Minta State Store".

  5. Dalam "Set Tugas Urutan Variabel Tugas" yang baru dibuat:

    • Di sebelah Name:kotak teks, masukkan:Set Local State Location
    • Di sebelah Task Sequence Variable:kotak teks, masukkan OSDStateStorePath
    • Di sebelah Value:kotak teks, masukkan:%SystemDrive%\StateStore
  6. Klik pada tombol "OK" atau "Terapkan" untuk menyimpan urutan tugas.

Jika dalam Langkah 3 tugas "Tentukan Lokal atau Remote UserState" tidak ada atau telah diganti nama, cari tugas "Jalankan Perintah Baris" yang menjalankan skrip ztiuserstate.wsf, dan kemudian ikuti langkah-langkah di atas.

Richard Webb
sumber
4

Hal pertama yang pertama, cobalah membangun kembali indeks Anda. Selain itu, kecualikan dari mengindeks folder apa pun dengan unduhan sementara / tidak selesai. File yang belum selesai secara definisi rusak dan bisa menggantung proses. Codec video / audio juga bisa menggantung jika pengindeksan mencari metadata di dalamnya.

teks alternatif

mtone
sumber
Bisakah Anda menguraikan komentar metadata? Jika ada sesuatu, di suatu tempat macet hal ini, mungkin itu akan membantu saya memikirkannya.
Ricket
Pengindeksan mencoba untuk mendapatkan metadata dengan melihat ke dalam file. Beberapa jenis file, seperti file film AVI memerlukan codec (atau pemuat kontainer, sering juga disebut sebagai codec) untuk membuka file-file ini dan mendapatkan resolusi, panjang, dll. Codec itu bisa hang jika file rusak. Yang mengatakan, saya belum menemukan masalah sejauh ini di Windows 7, tetapi di XP dulu merupakan masalah umum.
mtone
4

Pencarian saya macet karena file Outlook.pst buruk. Saya menjalankan utilitas perbaikan pst yang SCANPST.EXEditemukan di direktori yang sama dengan Outlook 2007 yang dapat dieksekusi ( C:\Program Files (x86)\Microsoft Office\Office12pada mesin Windows 7 x64 saya.)

masukkan deskripsi gambar di sini

glenviewjeff
sumber
1
File diberi nama SCANPST.EXE
M. Dudley
2

Sudahkah Anda memverifikasi bahwa hard drive Anda tidak sekarat?

Klik kanan pada drive, buka dialog Properties, buka tab Tools, dan lakukan pemeriksaan kesalahan (dengan pemindaian sektor buruk).

Tuan Fooz
sumber
ya, ide yang sangat bagus untuk memastikan dasar-dasarnya bekerja dengan benar. Periksa juga log peristiwa untuk kesalahan sistem.
Knox
2

Salah satu pertanyaan yang diajukan di sini adalah tentang cara melihat apakah SearchIndexer.exe diblokir, salah atau menggantung, atau apakah masih ada kemajuan. Juga, akan menyenangkan untuk melihat file apa yang saat ini sedang diindeks.

Inilah cara untuk mengetahuinya.

Microsoft tidak siap memberi Anda alat untuk melihatnya, file log yang dibuat selama pencarian, seperti MSS.log (kemudian disalin dan diubah dengan nama lain, lalu dihapus) adalah file biner dan tidak dapat dibaca kecuali dengan alat khusus.

Alternatif lain saya mencoba mencari tahu apakah itu tergantung pada satu file atau tidak adalah dengan mencari SysInternal's Process Monitor . Saya mengatur filter sebagai berikut:

  • termasuk proses SearchProtocolHost.exe(catatan: tidak SearchIndexer.exe ),
  • termasuk jenis acara File System,
  • kecualikan apa pun di direktori C:\Windowsdan C:\ProgramData,
  • dan / atau sertakan direktori yang benar-benar Anda indeks,
  • secara opsional mengatur Operasi ke ReadFile.
  • klik Apply atau OK dan kemudian klik tombol Capture kiri atas.

Tampilan acara yang dihasilkan memberi Anda semua ReadFileoperasi (dan beberapa lainnya) yang saat ini sedang dibaca oleh layanan Indeks Pencarian Microsoft.

Ini harus menjadi daftar ReadFileoperasi yang panjang dan file yang saat ini sedang diindeks berada di kolom Path. Kolom Hasil harus menunjukkan SUCCESS(jika tidak, ada masalah Anda) dan kolom Detail harus terus menunjukkan offset yang berbeda (jika tidak, ini berulang, dan itu lagi merupakan petunjuk yang mungkin untuk penyebab masalah Anda).

Abel
sumber
1
+1 @Mungkink Tautan untuk Sys | nternals masih berfungsi! Ini adalah satu lagi yang akan menyediakan Suite SysInternals lengkap
ElderDelp