У меня проблемы с отображением записей, содержащих слово "under", с помощью функции SQL CONTAINS . Я прочитал документацию Microsoft для этого и на основе там примера с использованием базы данных AdventureWorks набор результатов, как и ожидалось, но с трудом, когда тот же пример применяется для поиска записей, имеющих слово " в ".
Вот мой сценарий, над которым я работаю, который вы также можете выполнить для моделирования сценария:
--Creating table
CREATE TABLE MyTable
(
ID INT NOT NULL IDENTITY(1,1),
[Description] NVARCHAR(200) NULL
CONSTRAINT PK_ID PRIMARY KEY CLUSTERED (ID)
)
--Populating table
INSERT INTO MyTable
SELECT 'Testing'
UNION SELECT 'This is it'
UNION SELECT 'Under the name of whoever'
UNION SELECT 'I undergo surgery'
UNION SELECT 'Under Armour'
UNION SELECT 'Frequent under the table'
UNION SELECT 'I am underpaid too'
UNION SELECT 'Anything under the sun'
UNION SELECT 'What is the matter peanut butter'
UNION SELECT 'Underline'
UNION SELECT 'Chainring Bolts'
UNION SELECT 'Chaining Nut'
UNION SELECT 'Chainring'
UNION SELECT 'Chain Stays'
UNION SELECT 'Chain'
UNION SELECT 'Dummy Chain'
UNION SELECT 'Land Down Under'
UNION SELECT 'Many Underlings'
UNION SELECT 'Only Undo'
--One time setup to enable fulltext search
EXEC sp_fulltext_database 'enable'
GO
CREATE FULLTEXT CATALOG FTCSearch
GO
CREATE FULLTEXT INDEX ON MyTable([Description])
KEY INDEX PK_ID ON FTCSearch
GO
Запрос:
--Query showing phrases that have c prefix
SELECT * FROM MyTable
WHERE CONTAINS([Description], ' "c*" ')
--Getting the expected result
--Query showing phrases that have u prefix
SELECT * FROM MyTable
WHERE CONTAINS([Description], ' "under*" ')
--Not getting expected result: Missing phrases that contains 'under' word
--Missing: Under the name of whoever
--Missing: Under Armour
--Missing: Frequent under the table
--Missing: Anything under the sun
--Missing: Land Down Under
--Missing: Under the name of whoever