Full-Text Search Architecture

Full-Text Search in Microsoft SQL Server 2005 is powered by the Microsoft Full-Text Engine for SQL Server (MSFTESQL). The MSFTESQL service has two roles: indexing support and querying support.

The architecture of Full-Text Search in SQL Server is shown in the following illustration.

Full-Text Search architecture diagram

The architecture consists of the following processes:

  • SQL Server process (Sqlservr.exe)
  • Microsoft Full-Text Engine for SQL Server process (Msftesql.exe)
  • Microsoft Full-Text Engine Filter Daemon process (Msftefd.exe)

Each of these processes contains several components that are described in the following sections.

SQL Server Process

The SQL Server process consists of the following components:

  • User tables
    These tables contain the data to be full-text indexed.
  • Key map
    This component contains the mapping between the data values in the full-text key columns and internal document IDs.
  • SQL Server query processor
  • Microsoft Full-Text Gatherer
    This component is responsible for scheduling and driving the population of full-text indexes, and also for monitoring full-text catalogs.

Microsoft Full-Text Engine for SQL Server (MSFTESQL) Process

The MSFTESQL service is responsible for the following operations:

  • Populating and managing full-text catalogs.
  • Making full-text searches on tables easier in SQL Server databases.

The MSFTESQL process hosts the components listed in the following table.

Component Description

Filter Daemon Manager

Is responsible for monitoring the status of the Microsoft Full-Text Engine Filter Daemon (MSFTEFD) process.


Builds the inverted index structure that is used to store the indexed tokens. For more information, see Full-Text Index Structure.

Thesaurus Files

Contain synonyms of search terms. For more information, see Thesaurus.

Noise Word Files

Contain a list of frequently occurring words that are not useful for the search. For more information, see Noise Words.

Word breakers and stemmers

Perform linguistic analysis on all full-text indexed data. A word breaker is the component that determines where word boundaries exist in a stream of text in the row being full-text indexed. A stemmer extracts the root form of a given word. For example, "running", "ran", and "runner" are various forms of the word "run". The MSFTESQL service invokes stemmers at query time if the query is a FREETEXT query or requests an inflectional expansion.

For more information, see Word Breakers and Stemmers.

For more information about the MSFTESQL service, see Microsoft Full-Text Engine for SQL Server.

Microsoft Full-Text Engine Filter Daemon (MSFTEFD) Process

The MSFTEFD is started by the MSFTESQL service during the full-text indexing process. The MSFTEFD hosts the following components that are responsible for accessing and filtering data from tables, word breaking, and stemming:

  • Protocol handler
    In SQL Server 2005, this component accesses data from a table in a specified database.
  • Filters
    Extract a stream of textual information from a document, and discard all nontextual and formatting information. For more information, see Full-Text Search Filters.
  • Word breakers and stemmers

Internal Tables

Full-Text Search uses the following internal tables:

  • fulltext_index_map stores mappings between full-text key columns and internal document IDs that uniquely identify documents.
  • fulltext_catalog_freelist stores unused document IDs.


These tables are for internal use only. You cannot modify these tables or run queries against them. We do not guarantee backward compatibility or that these tables will be available in future releases of SQL Server.

See Also


Microsoft Full-Text Engine for SQL Server
Full-Text Indexing and Querying Process

Other Resources

Internal Tables

Help and Information

Getting SQL Server 2005 Assistance

Change History

Release History

14 April 2006

New content:
  • Added information about internal tables.