Part of building my laptop using Windows Server 2008 x64 included turning on desktop search. On desktop OS's, the Windows Search Service is enabled by default; not so with server OS's. But even after turning on the search service, my desktop search features were largely non-functional. For instance, in Outlook, searching for the string "foo" would turn up no results, even though there were several inbox entries with the word "foo" plainly visible. Accompanying these problems were a huge number of error 3031 events in the Application event log (1000s per hour), with the following text:

Log Name: Application

Source: Microsoft-Windows-Search

Date: 5/16/2008 9:30:55 AM

Event ID: 3031

Task Category: Gatherer

Level: Error

Keywords: Classic

User: N/A

Computer: <computername>

Description: A document ID cannot be allocated.

Context: Windows Application, SystemIndex Catalog

Details: The data necessary to complete this operation is not yet available. (0x8000000a)

I eventually opened up a support ticket with PSS, and while I was waiting on hold, I figured out the solution.

Basically the problem was a corrupted search index. The search service builds its indexes using ESE, and keeps them in .EDB files, and for whatever reason, the .EDB file on my machine was corrupted. All I had to do was find the index and delete it. The search service rebuilt the index and has been working flawlessly ever since.

The Windows search index is kept in \ProgramData\Microsoft\Search\Data\Applications\Windows. I simply stopped the search service, deleted all the files in that folder, and restarted the search service.