Getting Started with Full-Text Search
Setting up full-text indexing capability on a table in Microsoft SQL Server 2005 is a two-step process:
- Create a full-text catalog to store full-text indexes.
- Create full-text indexes.
Databases in SQL Server are full-text enabled by default, unless they are created by using SQL Server Management Studio. To enable a database for full-text search when you create a database by using Management Studio, see How to: Create a Database (SQL Server Management Studio). To enable an existing database for full-text search, see How to: Enable a Database for Full-Text Indexing (SQL Server Management Studio).
You can also create full-text indexes on indexed views. For more information about indexed views, see Types of Views.
Setting Up Full-Text Search in AdventureWorks
The following example creates a full-text index on the
Document table in AdventureWorks.
To create a full-text catalog named
AdvWksDocFTCat, use the
CREATE FULLTEXT CATALOG statement:
CREATE FULLTEXT CATALOG AdvWksDocFTCat
This statement creates the full-text catalog in the default directory specified during setup. The folder named
AdvWksDocFTCat is in the default directory.
To specify the location of the directory, use the IN PATH clause. For more information, see CREATE FULLTEXT CATALOG (Transact-SQL).
Alternatively, you can use Management Studio to create a full-text catalog. In Object Explorer, under the database in which you want to create the full-text catalog, expand the Storage folder, right-click the Full-Text Catalogs folder, and then click New Full-Text Catalog. For more information, see New Full-Text Catalog (General Page).
Full-text catalog IDs start at 00005 and are incremented by one for each new catalog created.
As a best practice, if possible, full-text catalogs should be created on their own physical drive (or drives). Given the process of building a full-text index is fairly I/O intensive (on a high level, it consists of reading data from SQL Server, and then writing the index to the file system), you probably want to avoid letting your I/O subsystem become a bottleneck.
Now that you have created the full-text catalog, the next step is to create a full-text index. But, before you can create a full-text index on the
Document table, you have to determine whether the table has a unique, single-column, non-nullable index. The Microsoft Full-text Engine for SQL Server (MSFTESQL) service uses this unique index to map each row in the table to a unique, compressible key.
To create a unique, single-column, non-nullable index, run the following statement:
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID)
Document table already has such a column. The previous code is for demonstration purposes only.
Now that you have a unique key, you can create a full-text index on the
CREATE FULLTEXT INDEX ON Production.Document ( Document --Full-text index column name TYPE COLUMN FileExtension --Name of column that contains file type information Language 0X0 --0X0 is LCID for neutral language ) KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index WITH CHANGE_TRACKING AUTO --Population type GO
Alternatively, you can create a full-text index by using the Full-Text Indexing Wizard. For more information, see How to: Launch the Full-Text Indexing Wizard (SQL Server Management Studio).
For information about things to consider when you are choosing the column language, see International Considerations for Full-Text Search.
To monitor the population status use either the FULLTEXTCATALOGPROPERTY or OBJECTPROPERTYEX functions. To get find the catalog population status, run the following statement:
SELECT FULLTEXTCATALOGPROPERTY('AdvWksDocFTCat', 'Populatestatus')
Typically, if a full population is in progress, the result returned is 1.
Help and Information
17 July 2006