1

В настоящее время я пытаюсь добавить индекс FULLTEXT, чтобы иметь возможность искать ключевые слова в колонке повествования, которые содержат ключевые слова. Я пробовал много разных учебников, и хотя я их скопировал точно, я не могу реплицировать результаты при использовании функции CONTAINS в разделе «ГДЕ».SQL - FULLTEXT INDEX

Ниже приведен пример моего сценария, который я использовал с некоторыми примерами данных. Кто-нибудь сможет объяснить мне, почему это не работает, поскольку я серьезно пытаюсь понять, где может быть ошибка.

CREATE TABLE dbo.AAAA_FullTextTest5 
    (ID INT Identity(1, 1) NOT NULL 
    ,LOCATION VARCHAR (255) 
    ,NARRATIVE VARCHAR(MAX) 
    ) 

ALTER TABLE dbo.AAAA_FullTextTest5 add constraint PK_FullTextTest5 PRIMARY KEY (ID) 

INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('USA Texas', 'WRIGHT BROTHERS') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Worldwide', 'CROWN PROS Builders LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Devon United Kingdom', 'J PJH ROOFING LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('UK', 'Shoreham Port Authority and Shoreham Port Developments & The Port of Shoreham Trustees ') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('EUROPE AND RUSSIA', 'ZHY SERVICES') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Austrialia', 'BrotherLimited') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('ASIA', 'DRILLING SERVICES LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('JAPAN', 'BROOKS WASTE LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Melbourne', 'TRC Service Company') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('GERMANY & HOLLAND', 'Samson Group') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Frankfurt', 'SCAFFOLDING LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Swindon, England', 'Scaffold Access Ltd') 

CREATE FULLTEXT CATALOG FullTextTest5 

CREATE FULLTEXT INDEX ON dbo.AAAA_FullTextTest5 (
      Location language 1033 
      ,Narrative language 1033) 
KEY INDEX PK_FullTextTest5 ON FullTextTest5 
WITH CHANGE_TRACKING AUTO 

SELECT * FROM dbo.AAAA_FullTextTest5 
WHERE CONTAINS(NARRATIVE, 'Access') 
+0

Какие dbms? (Это специфичная для продукта функция ....) – jarlh

+0

Можете ли вы пояснить, почему она не работает? Любые ошибки, или просто не результаты, которые вы ожидаете (и если да, то каковы они)? –

+0

При этом не возникает ошибок. Его просто не возвращаются результаты, и я не могу понять, почему на основании наличия хотя бы одного результата со словом «Access» в нем. – bwsutton

ответ

0

На основании инструкции здесь: https://msdn.microsoft.com/en-us/library/ms142497.aspx, появляется следующее для правильной работы в моей локальной установки SQL Server 2008 R2, а также моей локальной установки SQL Server 2012:

CREATE TABLE dbo.AAAA_FullTextTest5 
    (ID INT Identity(1, 1) NOT NULL 
    ,LOCATION VARCHAR (255) 
    ,NARRATIVE VARCHAR(MAX) 
    ) 
GO 

CREATE UNIQUE INDEX UI_AAAA_FullTextTest5 ON dbo.AAAA_FullTextTest5(ID) 
GO 

INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('USA Texas', 'WRIGHT BROTHERS') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Worldwide', 'CROWN PROS Builders LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Devon United Kingdom', 'J PJH ROOFING LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('UK', 'Shoreham Port Authority and Shoreham Port Developments & The Port of Shoreham Trustees ') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('EUROPE AND RUSSIA', 'ZHY SERVICES') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Austrialia', 'BrotherLimited') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('ASIA', 'DRILLING SERVICES LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('JAPAN', 'BROOKS WASTE LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Melbourne', 'TRC Service Company') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('GERMANY & HOLLAND', 'Samson Group') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Frankfurt', 'SCAFFOLDING LTD') 
INSERT INTO dbo.AAAA_FullTextTest5 (LOCATION, NARRATIVE) VALUES ('Swindon, England', 'Scaffold Access Ltd') 
GO 

CREATE FULLTEXT CATALOG AAAA_FTCat; 
GO 

CREATE FULLTEXT INDEX ON AAAA_FullTextTest5 
(
    NARRATIVE       --Full-text index column name 
    Language 2057     --2057 is the LCID for British English 
) 
KEY INDEX UI_AAAA_FullTextTest5 ON AAAA_FTCat --Unique index 
WITH CHANGE_TRACKING AUTO   --Population type; 
GO 

С выше установки на месте, я могу после этого запроса:

SELECT * FROM AAAA_FullTextTest5 
WHERE CONTAINS(NARRATIVE, 'Access') 

И получить этот набор результатов:

ID LOCATION   NARRATIVE 
12 Swindon, England Scaffold Access Ltd 
+0

Hi Paul Спасибо за ваш ответ. К сожалению, это все еще не работает в 2012 году. – bwsutton

+0

@bwsutton Вы уверены, что скопировали код правильно? Я могу запустить это против моей локальной копии SQL Server 2012 с тем же набором результатов. –

+0

Hi Paul Да, я уверен, что я скопировал его правильно, и только что мой коллега затенил меня, чтобы проверить. Я пробовал пару раз и до сих пор оставил 0 строк. – bwsutton

Смежные вопросы