Поделиться через


Реализация полнотекстового поиска

Полнотекстовый поиск доступен для отдельных экземпляров SQL Server и представлен в SMO объектом FullTextService. Объект FullTextService размещен в объекте Server. Он используется для управления параметрами конфигурации для службы полнотекстового поиска (Майкрософт). Объект FullTextCatalogCollection принадлежит объекту Database и является коллекцией объектов FullTextCatalog, представляющих полнотекстовые каталоги, определенные в базе данных. Для каждой таблицы можно определить только один полнотекстовый индекс (в отличие от обычных индексов). Индекс представлен объектом FullTextIndexColumn в объекте Table.

Чтобы создать службу полнотекстового поиска, необходимо иметь полнотекстовый каталог, определенный в базе данных, и индекс полнотекстового поиска, определенный на одной из таблиц в базе данных.

Сначала создайте полнотекстовый каталог для базы данных, вызвав конструктор FullTextCatalog и указав имя каталога. Затем создайте полнотекстовый индекс, вызвав конструктор и указав таблицу, по которой он будет создан. Затем для полнотекстового индекса можно добавить столбцы индекса с помощью объекта FullTextIndexColumn, указав имя столбца в таблице. Потом укажите в свойстве CatalogName путь к созданному каталогу. Наконец, вызовите метод Create и создайте полнотекстовый индекс для экземпляра SQL Server.

Примеры

Чтобы использовать предоставленный пример кода при создании собственного приложения, необходимо выбрать среду разработки, шаблон программирования и язык программирования. Дополнительные сведения см. в разделах Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET и Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.

Создание службы полнотекстового поиска в Visual Basic .NET

В этом примере кода создается каталог полнотекстового поиска для таблицы ProductCategory в образце базы данных AdventureWorks. Затем в нем создается индекс полнотекстового поиска по столбцу Name в таблице ProductCategory. Для индекса полнотекстового поиска необходимо, чтобы для столбца уже был определен уникальный индекс.

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Reference the ProductCategory table.
Dim tb As Table
tb = db.Tables("ProductCategory", "Production")
'Define a FullTextCatalog object variable by specifying the parent database and name arguments in the constructor.
Dim ftc As FullTextCatalog
ftc = New FullTextCatalog(db, "Test_Catalog")
ftc.IsDefault = True
'Create the Full Text Search catalog on the instance of SQL Server.
ftc.Create()
'Define a FullTextIndex object varaible by supplying the parent table argument in the constructor.
Dim fti As FullTextIndex
fti = New FullTextIndex(tb)
'Define a FullTextIndexColumn object variable by supplying the parent index and column name arguements in the constructor.
Dim ftic As FullTextIndexColumn
ftic = New FullTextIndexColumn(fti, "Name")
'Add the indexed column to the index.
fti.IndexedColumns.Add(ftic)
fti.ChangeTracking = ChangeTracking.Automatic
'Specify the unique index on the table that is required by the Full Text Search index.
fti.UniqueIndexName = "AK_ProductCategory_Name"
'Specify the catalog associated with the index.
fti.CatalogName = "Test_Catalog"
'Create the Full Text Search index on the instance of SQL Server.
fti.Create()