SQL-全文索引
我目前正在尝试添加全文索引,以便能够在包含关键字的叙述栏中搜索关键字。我尝试过许多不同的教程,虽然我完全复制了它们,但在“WHERE”部分使用“CONTAINS”功能时无法复制结果 下面是我的脚本的一个例子,我一直在使用一些示例数据。有没有人能向我解释为什么这不起作用,因为我正在认真地努力找出错误可能在哪里SQL-全文索引,sql,sql-server,full-text-search,full-text-indexing,full-text-catalog,Sql,Sql Server,Full Text Search,Full Text Indexing,Full Text Catalog,我目前正在尝试添加全文索引,以便能够在包含关键字的叙述栏中搜索关键字。我尝试过许多不同的教程,虽然我完全复制了它们,但在“WHERE”部分使用“CONTAINS”功能时无法复制结果 下面是我的脚本的一个例子,我一直在使用一些示例数据。有没有人能向我解释为什么这不起作用,因为我正在认真地努力找出错误可能在哪里 CREATE TABLE dbo.AAAA_FullTextTest5 (ID INT Identity(1, 1) NOT NULL ,LOCATION VARCHAR (
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')
根据此处的说明:,在本地安装的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
哪个数据库管理系统?(这是特定于产品的功能……)您能否澄清它不起作用的原因?任何错误,或者仅仅不是您期望的结果(如果是,它们是什么)?运行此操作时不会出现错误。只是没有返回结果,我无法理解为什么至少有一个结果中有“Access”一词。嗨@jarlh,这是db版本,如果这是你想要的?(无列名)Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日00:54:03版权所有(c)Windows NT 6.1上的Microsoft Corporation Enterprise Edition(64位)(Build 7601:Service Pack 1)你好,Paul谢谢你的回答。不幸的是,这似乎在2012年仍然不起作用。@bwsutton您确定已正确复制了代码吗?我可以对SQL Server 2012的本地副本运行此操作,并使用相同的结果集。您好,Paul,是的,我确信我已正确复制了它,并让我的同事跟踪检查。我现在试了好几次,但仍然得到了0行,很不幸。@bwsutton好吧,给我涂颜色。我无法重现你描述的行为。如果全文索引创建成功,SELECT查询将始终在我的计算机上返回预期结果。我甚至不认为有一种方法可以在为表创建全文索引后禁用对该表的全文搜索。如果没有安装语言或分词符,则创建索引时会出现错误。我不知道如何才能成功创建索引,但却让查询不返回结果。我知道这很令人困惑。我已经检查了安装配置,看起来一切正常,这就是为什么索引会像您所说的那样运行。谢谢你的帮助