# Windows Search

Windows Search (formerly MSN Desktop Search, Windows Desktop Search, and the Windows Search Engine) is a content index and desktop search platform by Microsoft introduced in Windows Vista as a replacement for the previous Indexing Service of Windows 2000, Windows XP, and Windows Server 2003, designed to facilitate local and remote queries for files and non-file items in the Windows Shell and in compatible applications. It was developed after the postponement of WinFS and introduced to Windows several benefits of that platform.
Windows Search creates a local Index of files — audio tracks, documents, folders, programs, photos, and videos — as well as of non-file items such as contacts and messages of Microsoft Outlook and their metadata for which users can perform incremental searches based on details such as contents, dates, names, types, and sizes; the Index consists of prose within files and items and metadata properties. Control Panel and Settings can also be searched.
Windows Search was introduced to enhance search result rapidity, simplify data discovery, and to unify desktop search platforms across Microsoft Windows; it was available as an optional download for Windows 2000 and Windows XP. It has received several updates since its introduction and it is also available in Windows 7, Windows 8, Windows RT, Windows 8.1, Windows 10, and Windows 11.
In January 2025, Microsoft released an enhanced version of Windows Search for their new NPU-based Copilot+ PC devices. This release of Windows Search additionally enables finding local documents, images and settings using user's own words and phrases, instead of just relying on exact keyword matches.

## History

Windows Search is the successor of the Indexing Service, a content indexing solution originally developed as an optional download for Windows NT 4.0 and Internet Information Services 3.0, designed to gather resources located on Web servers; it is a remainder of the Object File System of the Cairo operating system project that never fully emerged. Development of Windows Search began in 2004 after the postponement of WinFS, the common data storage platform developed for Windows Vista, as an optional component of its MSN Toolbar Suite ("MSN Toolbar Suite with Desktop Search") for Windows XP and Windows 2000 released as preliminary software on December 13, 2004.
In prerelease builds of Windows Vista it was integrated with the Windows Shell, renamed as the Windows Search Engine, and introduced features that were originally touted as benefits of WinFS: content indexing, incremental searching, property stacking, and query persisting. Windows Search like WinFS enables queries across existing commonalities between items (such as finding all messages with attachments, or all messages with PowerPoint slides that mention only a particular subject) but unlike WinFS it does not provide a relational item database with schema-based enforcement, management, and storage; it provides a way to search for commonalities that already exist across disparate types.
Windows Search additionally deprecates the Indexing Service, as WinFS was originally meant to do. Microsoft ultimately removed the Indexing Service from Windows with the release of Windows 8 in 2012.

## Overview

Windows Search builds a local Index of files and non-file items stored on a machine, which allows results to appear more rapidly when users perform searches than when searching for unindexed files or items. Microsoft suggests that a few hours may be necessary for the building process to complete, an assessment dependent on the number and size of files and non-file items to index. Windows Search enables incremental search (search as you type or wordwheeling) to present search results immediately when a character is typed in a search box, with subsequent entered characters further narrowing and refining results even before the full name, phrase, or word is entered. No information in the Index is sent to Microsoft.
Windows Search is an extensible and programmable platform with multiple interfaces for operating over new or preexisting applications, data stores, file systems, and types:
| Interface | Purpose and use in Windows Search |
| IFilters (Filter Handlers) | Extract, parse, and scan file contents |
| Property Handlers | Emit properties of files and items |
| Protocol Handlers | Expose data in data stores and file systems |
* IFilters (Filter Handlers) — the same interface used by Microsoft Exchange Server, SharePoint, and SQL Server — are used to extract, parse, and store in the Index the contents of various file formats. Default IFilters are available for over 200 common file formats (including AVI, BMP, EML, GIF, Excel, HTML, JPEG, MHT, MSG, PNG, PowerPoint, TXT, XML, WMA, WMV, and Word files). IFilters can be created for new or proprietary formats.
* Property Handlers of the Microsoft Property System introduced in Windows Vista expose metadata properties of files and non-file items to the Index for rapid retrieval in response to user queries; property handlers can be created for new and proprietary files and non-file items.
* Protocol Handlers enable files and non-file items in repositories of proprietary applications or file systems to be indexed by the Indexer and exposed to the Windows Shell. There are inbox protocol handlers for the File System, Internet Explorer, Microsoft Outlook, and Offline Files.

## Architecture

Windows Search is implemented as a Windows Service. The search service implements the Windows Search configuration and query APIs and also controls, as well as all indexing and query components. The most important component of Windows Search is the Indexer, which crawls the file system on initial setup, and then listens for file system notifications to pick up changed files in order to create and maintain the index of data. It achieves this using three processes:
* SearchIndexer.exe, which hosts the indexes and the list of URIs that require indexing, as well as exposes the external configuration and query APIs that other applications use to leverage the Windows Search features.
* SearchProtocolHost.exe, which hosts the protocol handlers. It runs with the least permission required for the protocol handler. For example, when accessing filesystem, it runs with the credentials of the system account, but on accessing network shares, it runs with the credentials of the user.
* SearchFilterHost.exe, which hosts the IFilters and property handlers to extract metadata and textual content. It is a low integrity process, which means that it does not have any permission to change the system settings, so even if it encounters files with malicious content, and by any chance if they manage to take over the process, they will not be able to change any system settings.
The search service consists of several components, including the Gatherer, the Merger, the Backoff Controller, and the Query Processor, among others. The Gatherer retrieves the list of URIs that need to be crawled and invokes proper protocol handler to access the store that hosts the URI, and then the proper property-handler (to extract metadata) and IFilter to extract the document text. Different indices are created during different runs; it is the job of the Merger to periodically merge the indices. While indexing, the indices are generally maintained in-memory and then flushed to disk after a merge to reduce disk I/O. The metadata is stored in property store, which is a database maintained by the ESE database engine. The text is tokenized and the tokens are stored in a custom database built using Inverted Indices. Apart from the indices and property store, another persistent data structure is maintained: the Gather Queue. The Gather Queue maintains a prioritized queue of URIs that needs indexing. The Backoff Controller mentioned above monitors the available system resources, and controls the rate at which the indexer runs. It has three states:
* Running: In this state, the indexer runs without any restrictions. The indexer runs in this state only when there is no contention for resources.
* Throttled: In this state, the crawling of URIs and extraction of text and metadata is deliberately throttled, so that the number of operations per minute is kept under tight control. The indexer is in this state when there is contention for resources, for example, when other applications are running. By throttling the operations, it is ensured that the other operations are not starved of resources they might need.
* Backed off: In this state, no indexing is done. Only the Gather Queues are kept active so that items do not go unindexed. This state is activated on extreme resource shortage (less than 5 MB of RAM or 200 MB of disk space), or if indexing is configured to be disabled when the computer is on battery power, or if the indexer is manually paused by the user. If the Windows Search (WSearch) service is stopped and disabled, the search function of Windows Explorer is still usable but search speed maybe slower.

### Advanced Query Syntax

Windows Search queries are specified in Advanced Query Syntax (AQS) which supports not only simple text searches but provides advanced property-based query operations as well. AQS defines certain keywords which can be used to refine the search query, such as specifying Boolean operations on searched terms (AND, OR, NOT) as well as to specify further filters based on file metadata or file type. It can also be used to limit results from specific information stores like regular files, offline files cache, or email stores. File type specific operators are available as well. Windows Desktop Search also supports wildcard prefix matching searches. It also includes several SQL-like operators like GROUP BY. AQS is locale dependent and uses different keywords in international versions of Windows 7.

## Programmability

Users can access the Windows Search index programmatically using managed as well as native code. Native code connects to the index catalog by using a Data Source Object retrieved from the Indexing Service OLE DB provider. Managed code use the MSIDXS ADO.NET provider. One can query a catalog on a remote machine by specifying a UNC path. Programmers specify the criteria for searches using SQL-like syntax. The SQL query can either be created by hand, or by using an implementation of the ISearchQueryHelper interface. Windows Search provides implementations of the interface to convert an AQS or NQS queries to their SQL counterpart.
The OLE DB/SQL API implements the functionality for searching and querying across the indices and property stores. It uses a variant of SQL in which to represent the query (regular SQL with certain restrictions) and returns results as OLE DB Rowsets. Whenever a query executes, the parts of the index it used are temporarily cached so that further searches filtering the result set need not access the disk again, in order to improve performance. Windows Search stores its index in an Extensible Storage Engine file named Windows.edb that exists, by default, in the \ProgramData\Microsoft\Search\Data\Applications\Windows\ folder at the root of the system drive in Windows Vista or in later versions of Windows. (The corresponding location in Windows XP is \All Users\Application Data\Microsoft\Search\Data\Applications\Windows\ inside the Documents and Settings folder.)
The index store, called SystemIndex, contains all retrievable Windows IPropertyStore values for indexed items. Within the SystemIndex folder lurk SystemIndex.*.Crwl and SystemIndex.*.gthr files. The names and locations of documents in the system are exposed as a table with the column names System. ItemName and System. ItemURL respectively. A SQL query can directly reference these tables and index catalogues and use the MSIDXS provider to run queries against them. The search index can also be used via OLE DB, using the CollatorDSO provider. However, the OLE DB provider is read-only, supporting only SELECT and GROUP ON SQL statements.
Windows Search also registers a search-ms application protocol, which can be used to represent searches as URIs. The search parameters and filters are encoded in the URI using AQS or its natural language counterpart, NQS. When Explorer invokes the URI, Windows Search (which is the default registered handler for the protocol) launches the Search Explorer with the results of the search. In Windows Vista SP1 or later, third-party handlers can also register themselves as the application protocol handler, so that searches can be performed using any search engine which the user has set as default, and not just Windows Search.
The Windows Search service provides the Notifications API component to allow applications to "push" changed items that need indexing to the Windows Search indexer. Applications use the component to supply the URIs of the items that need to be indexed, and the URIs are written to the Gather Queue, where they are read off by the indexer. Microsoft Outlook and Microsoft OneNote use this ability to index the items managed by them and use Windows Search queries to provide the in-application searching features. The internal USN Journal Notifier component of Windows Search also uses the Notifications API, monitoring the Change Journal in an NTFS volume to keep track of files that have changed on the volume. If the file is in a location indexed by Windows Search and does not have the FANCI (File Attribute Not Content Indexed) attribute set, the Windows Search service is notified of its path via the Notification API.
Windows Search Configuration APIs are used to specify the configuration settings, such as the root of the URIs that needs to be monitored, setting the frequency of crawling or viewing status information like number of items indexed or length of the gather queue or the reason for throttling the indexer. It also exposes APIs to register protocol handlers (via the ISearchProtocol interface, property handlers (via the IPropertyStore interface) or IFilter implementations (via the IFilter interface). IFilter implementations allow only read-only extraction of text and properties, whereas IPropertyStore allows writing properties as well.

## Windows Desktop Search

Windows Desktop Search, a standalone add-on made available as freeware, is the implementation of Windows Search for Windows 2000, Windows XP and Windows Server 2003.
Windows Desktop Search and Windows Search share a common architecture and indexing technology and use a compatible application programming interface (API).
Searches are specified using the Advanced Query Syntax and are executed while the user types (incremental find). By default, it comes with a number of IFilters for the most common file types—documents, audio, video as well as protocol handlers for Microsoft Outlook e-mails. Other protocol handlers and IFilters can be installed as needed.
Windows Desktop Search allows network shares to be added to the index.

### User interface

The Windows Desktop Search functionality is exposed via a Windows Taskbar mounted deskbar, accessible via a ⊞ Win+⇧ Shift+F keyboard shortcut. It provides a text field to type the query and the results are presented in a flyout pane. It also integrates as a Windows Explorer window. On selecting a file in the Explorer window, a preview of the file is shown in the right hand side of the window, without opening the application which created the file. Web searches can be initiated from both interfaces, but that will open the browser to search the terms using the default search engine.
The deskbar also has the capability to create application aliases, which are short strings which can be set to open different applications. This functionality is accessed by prefixing the ! character to the predefined string. For example, "!calc" opens the Windows Calculator. The help documentation includes syntax for creating application aliases out of any text string, regardless of prefix. This feature can also be used to create shortcut for URLs, which when entered, will open the specified URL in browser. It can also be used to send parametrized information over the URL, which are used to create search aliases. For example, "w text" can be configured to search "text" in Wikipedia.

### Releases

Windows Desktop Search was initially released as MSN Desktop Search, as a part of the MSN Toolbar suite. It was re-introduced as Windows Desktop Search with version 2, while still being distributed with MSN Toolbar Suite.
For Windows 2000, Windows XP and Windows Server 2003, it came in two flavors, one for home users and the other for enterprise use. The only difference between the two was that the latter could be configured via group policy. The home edition was bundled with MSN Toolbar, while the other was available as a standalone application. Later, when MSN Toolbar was discontinued in favor of Windows Live Toolbar, the home edition of Windows Desktop Search was discontinued as well. The last version available for Windows 2000 is Windows Desktop Search 2.66.
For Windows XP and Windows Server 2003, version 3.0 of Windows Desktop Search was provided as a standalone release – separate from Windows Live Toolbar. One of the significant new features is Windows Desktop Search 3.0 also installs the Property System on Windows XP introduced in Windows Vista. Windows Desktop Search 3.0 is geared for pre-Windows Vista users, hence the indexer was implemented as a Windows Service, rather than as a per-user application, so that the same index as well as a single instance of the service can be shared across all users – thereby improving performance. Windows Desktop Search found itself in the midst of a controversy on October 25, 2007, when Windows Desktop Search 3.01 was automatically pushed out and installed on Windows when updated via Windows Server Update Services (WSUS). Microsoft responded with two posts on the WSUS Product Team Blog.

## Windows Vista

Windows Vista and Windows Server 2008 introduced Instant Search in the Start menu and in Windows Explorer.
It offers a superset of the features provided by Windows Desktop Search (WDS), while being API compatible with it. Unlike WDS, it can seamlessly search indexed as well as non-indexed locations – for indexed locations the index is used and for non-indexed locations, the property handlers and IFilters are invoked on the fly as the search is being performed. This allows for more consistent results, though at the cost of searching speed over non-indexed locations. Windows Search uses Group Policy for centralized management. Windows Search also supports queries against a remote index.
Windows Search indexes offline caches of network shares, in addition to the local file systems. This means if the file server, on which a network file share is hosted, is running either Windows Vista or a later version of Windows or Windows Search 4.0 on Windows XP, any searches against the share will be queried against the server's index and present the results to the client system, filtering out the files the user does not have access to. This procedure is transparent to the user.
Microsoft Outlook e-mail stores starting with Outlook 2007, though Outlook 2002 and Outlook 2003 and Microsoft OneNote stores are also indexed if installed alongside Windows Search.
Unlike Windows Desktop Search on Windows XP, the Windows Search indexer performs the I/O operations with low priority, the process also runs with low CPU priority. As a result, whenever other processes require the I/O bandwidth or processor time, it is able to pre-empt the indexer, thereby significantly reducing the performance hit associated with the indexer running in the background.
Windows Search supports natural language searches; so the user can search for things like "photo taken last week" or "email sent from Dave". However, this is disabled by default. Natural language search expresses the queries in Natural Query Syntax (NQS), which is the natural language equivalent of AQS.

### User Interface

The search functionality is exposed using the search bars in the Start menu and the upper right hand corner of Windows Explorer windows, as well as Open/Save dialog boxes. When searching from the Start menu, the results are shown in the Start menu itself, overlapping the recently used programs. From the Start menu, it is also possible to launch an application by searching for its executable image name or display name. Searching from the search bars in Explorer windows replaces the content of the current folder with the search results. The Explorer windows can also render thumbnails in the search results if a Thumbnail Handler is registered for a particular file type. It can also render enhanced previews of items in a Preview Pane without launching the default application, if the application has registered a Preview Handler. This can provide functionality such as file type-specific navigation (such a browsing a presentation using next/previous controls, or seeking inside a media file). Preview handlers can also allow certain kind of selections (such as highlighting a text snippet) to be performed from the preview pane itself. In the Control Panel, the search bar in the window can also search for Control Panel options. However, unlike WDS, Windows Search does not support creating aliases.
There is also a Search Explorer, which is an integrated Windows Explorer window that is used for searches. It presents the user interface to specify the search parameters, including locations and file types that should be searched, and certain operators, without crafting the AQS queries by hand. With Windows Vista SP1, third-party applications will be able to override the Search Explorer as the default search interface so that the registered third-party application will be launched, instead of bringing up the Search Explorer, when invoked by any means.
It is also possible to save a search query as a Virtual Folder, called a Saved Search or Search Folder which, when accessed, runs the search with the saved query and returns the results as a folder listing. Physically, a search folder is just an XML file (with a .search-ms extension) which stores the search query (in either AQS or NQS), including the search operators as well. Windows Vista also supports query composition, where a saved search (called a scope) can be nested within the query string of another search. Search Folders are also distributable via RSS. By default, Windows references the profile of the user who originally created a Search Folder as part of the query's scope. This design choice does not prevent saved searches from being shared with other users, but it prevents them from operating on different user profiles. While users can manually modify the contents of a saved search so that the scope references the %USERPROFILE% environment variable, which will enable it to operate on other machines or profiles regardless of the original author, Microsoft has released a SearchMelt Creator utility that automates this process for the user.

### Kinds

With the release of Windows Vista and the Microsoft Property System, the System.Kind property was introduced to express a more user-friendly notion of file type; the new property abstracts filename extensions of items from the system and from the user by grouping these extensions separately and by mapping them to easily identifiable types (e.g., GIF, JPEG, and PNG photographs all are presented to the user as Pictures).
| Kind name | Mnemonics of kind name |
| Communication | Communications |
| Calendar | Appointment, Appointments, Calendars, Meeting, Meetings |
| Contact | Contacts, Person, People |
| Document | Doc, Docs, Documents |
| Email | E-mail, E-mails, Emails, Mail, Message, Messages |
| Feed | Feeds |
| Folder | Folders |
| Game | Games |
| Instant Message | IM, IMs, Instant Messages |
| Link | Links |
| Movie | Film, Films, Movies |
| Music | Song, Songs |
| Note | Notes |
| Picture | Image, Images, Photo, Photos, Pic, Pics |
| Program | Programs |
| Recorded TV | TV |
| Search Folder | Saved Search, Search |
| Task | Tasks |
| Video | Videos |
| Web History | History, WebHistory, Webpage, Webpages |
Items can belong to more than one type — a single Music item can also be a Video item, or a single Document can also be a Link — and the Windows Shell can expose items to the user based on these types instead of on filename extensions (e.g., to manage in one operation items of different filename extensions, or to find items without if the filename extension is not known). Mnemonics for these types exist (e.g., a Contact item is also a Person, a Calendar item is an Appointment, and a Movie is also a Film). Users can query for items based on these mnemonics as well.

## Windows Search 4.0

Windows Search 4.0 (also previously referred to as Windows Live Search, codenamed Casino or OneView) is the successor to the Windows Search platform for both Windows Desktop Search 3.0 on Windows XP as well as Instant Search on Windows Vista. It is mainly an update to the indexing components, with few changes to the Windows XP user interface and none on Windows Vista. It added remote query support to Windows XP and Windows Server 2003 based systems, which used to be a Vista-only feature. This allows a user with a Vista client (or an XP client with Windows Search 4.0) to search the index of networked machines which are also running a supported operating system.
Windows Search 4.0 was originally proposed by Microsoft's Windows Live division as an application that would unify local and remote indexed search in a new interface. Early screenshots of the program featured the new "flair" interface design seen in other Windows Live client applications of the time such as Windows Live Messenger and Windows Live Mail.
Windows Live Search Center could search web services which used the OpenSearch specification to make search results available as web feeds. It could aggregate searches from various indexes including the Windows Desktop Search index, Windows RSS Platform common feed store, and Microsoft Exchange and Microsoft SharePoint indexes, among others.
The first beta of Windows Search 4.0 was released on March 27, 2008. It included numerous performance improvements to the indexer and brought new features, including previously Vista-exclusive ones, to XP, including Group Policy integration, federation of searches to remote indexes, support for EFS-encrypted files and Vista-style preview handlers that allow document-type specific browsing of documents in the preview pane.
Windows Search 4.0 was released on June 3, 2008, and is supported on XP, Windows Server 2003, Vista, Windows Server 2008 and Windows Home Server.

## Windows 10

In Windows 10, Windows Search was added to the taskbar in place of the Start menu in earlier versions of Windows.
A new landing page was added showing users their top apps and recent activities on their computer.
The landing page also provides quick searches provided from Bing for the weather, top news stories, today in history and new movies.
The landing page also serves as a space that Microsoft can advertise in, such as with the new Chromium-based version of Microsoft Edge.
A preview pane from within the Search UI was added that supports apps and documents. When searching for a program, the taskbar jumplists for each program are shown in the preview pane and when searching for documents, file metadata such as file location, date last modified and the document author was also added.
The landing page allows the user to filter searches depending on whether the user looking for documents, pictures or settings.
Spell-correction was also added to Windows Search when searching for Apps & Settings to ensure a wider range of results were shown.
The search box in File Explorer now opens as soon as you click in the box and provides a dropdown of recent searches. Microsoft OneDrive content is also now integrated in addition to the indexed results. When clicking on the search result, the file will open immediately. Each search result also has a right click menu allowing the user to open the file's location.