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.
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.
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.
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.
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
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.
Help and Information
14 April 2006