Full-Text Search Architecture

In this article

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.

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.

Indexer

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.

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.

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.