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


Интегрирование компонента Full-Text Search и предикатов языка Transact-SQL

Предикаты CONTAINS и FREETEXT можно сочетать с любыми другими предикатами языка Transact-SQL, например LIKE и BETWEEN. Их также можно использовать во вложенных запросах. В этом примере выполняется поиск описаний, в которых идентификатор поиска не равен 5 и которые содержат слова «Aluminum» и «spindle».

USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
   CONTAINS(Description, ' Aluminum AND spindle');
GO

Следующий запрос использует предикат CONTAINS во вложенном запросе. Используя базу данных AdventureWorks, запрос получает значение комментария из всех комментариев в таблице ProductReview для конкретного велосипеда.

USE AdventureWorks;
GO
INSERT INTO Production.ProductReview 
(ProductID, ReviewerName, EmailAddress, Rating, Comments) 
VALUES
(780, 'John Smith', 'john@fourthcoffee.com', 5, 
'The Mountain-200 Silver from AdventureWorks Cycles meets and exceeds expectations. I enjoyed the smooth ride down the roads of Redmond')
 
-- Given the full-text catalog for these tables is Adv_ft_ctlg, 
-- with change_tracking on so that the full-text indexes are updated automatically.
WAITFOR DELAY '00:00:30'   
-- Wait 30 seconds to make sure that the full-text index gets updated.
 
 
SELECT r.Comments, p.Name
FROM Production.ProductReview r
JOIN Production.Product p 
ON
 r.ProductID = p.ProductID
 
AND r.ProductID = (SELECT ProductID
                  FROM Production.ProductReview
                  WHERE CONTAINS (Comments, 
                                 ' AdventureWorks AND 
                                   Redmond AND 
                                   "Mountain-200 Silver" '))

GO

См. также

Другие ресурсы

CONTAINS (Transact-SQL)
FREETEXT (Transact-SQL)
Предложение WHERE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005