Outlook search returns nothing, or misses recent mail
Searching in Outlook finds nothing, or finds old mail but not anything from the last few weeks. Outlook does not do its own searching in cached mode — it asks the Windows Search index, and the index is what has failed.
What you see
A search for a word that is plainly in the mailbox returns no results, or a banner reads "Search results may be incomplete because items are still being indexed" and never clears. Searching the same mailbox in Outlook on the web works correctly.
What is actually wrong
In cached Exchange mode the mailbox is an OST on disk and search is served by the Windows Search index over that file. The index can be missing Outlook entirely because the service is stopped or a policy excluded it, it can be stuck part-way through a rebuild, or the index database itself can be damaged. A very large OST on a slow disk simply takes longer than people expect.
Codes and articles
Start here — find out which fix applies
A script that runs the 3 inspection commands from the write-up below and prints what each one returned. It reads the machine and changes nothing — every command that could write, delete, start or stop is excluded from it by construction. Run this first, then pick the fix its output points at.
Fixes (3)
Confirm the search service and that Outlook is not excluded
Start here. If the service is off or a policy has excluded Outlook, every other fix is wasted effort.
Check the Windows Search service is running and set to start automatically.
Get-Service WSearch | Select-Object Name, Status, StartTypePerformance tuning guides routinely tell people to disable WSearch. Doing so breaks Outlook search completely, and nothing in Outlook says why.
Start it and set it back if it is disabled.
Set-Service WSearch -StartupType Automatic; Start-Service WSearchCheck for a policy that specifically excludes Outlook from the index.
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search' -ErrorAction SilentlyContinue | Select-Object PreventIndexingOutlook, PreventIndexingEmailAttachmentsPreventIndexingOutlook set to 1 produces exactly this symptom on a machine where everything else about search works normally.
Remove the exclusion if it is not deliberate, then restart the service.
Remove-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search' -Name PreventIndexingOutlook -ErrorAction SilentlyContinueRestart-Service WSearch
Check what the index is actually told to cover
Indexing runs but never completes, or search became unreliable as the mailbox grew.
Open Indexing Options and confirm Microsoft Outlook is ticked under Modify.
control srchadmin.dllLook at the item count on the Indexing Options window. If it is climbing, the index is working and simply has not caught up — leave the machine on, plugged in and unlocked, and check again later.
Indexing is throttled hard while a machine is on battery or under load. A laptop that is closed at five o'clock every day may never finish indexing a large mailbox, and no amount of rebuilding will change that.
Consider reducing how much mail is kept offline. File → Account Settings → Account Settings → Change → the Mail to keep offline slider. Twelve months indexes considerably faster than All.
Confirm the OST is not on a location the index skips — a removable drive or a network path.
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Outlook" -Filter *.ost | Select-Object FullName, @{n='GB';e={[math]::Round($_.Length/1GB,2)}}
Rebuild the index
The service is healthy, Outlook is included, and search is still wrong. Do this last — a rebuild takes hours and everyone's search is degraded until it finishes.
Warn the user first. Until the rebuild completes, search across the whole machine returns partial results, and that includes the Start menu.
Close Outlook.
Get-Process OUTLOOK -ErrorAction SilentlyContinue | Stop-Process -ForceStop the service and remove the index database.
Stop-Service WSearchRemove-Item "$env:ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb" -Force
Deleting Windows.edb is the same operation as the Rebuild button in Indexing Options, but it works when the button does nothing — which is the usual state by the time you get here. The file is a cache and holds no original data.
Start the service and let it rebuild.
Start-Service WSearchLeave the machine on, plugged in and signed in. Check progress by item count rather than by searching.
control srchadmin.dll
Related faults
Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.