询问一下SQL SERVER 2008 R2版本,建立全文索引后,搜索不到结果的问题;

jadesun 2013-01-14 02:20:26
测试脚本如下:

--创建数据库
CREATE DATABASE HnAirDocumentContentSys COLLATE Latin1_General_CI_AS
GO

--切换到相应的数据库
USE HnAirDocumentContentSys
GO

--创建数据表
CREATE TABLE Document_Content
(
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
[Controller_Id] [uniqueidentifier] NOT NULL,
[DocumentContent] VARBINARY(MAX) NULL,
[FileType] VARCHAR(50)
)
GO

--创建唯一索引
CREATE UNIQUE INDEX UQ_tb_Company_cpName ON Document_Content(Id)
GO

--为全文索引启用数据库
EXEC sp_fulltext_database 'enable'

--创建一个叫My_FullDif的全文目录
EXEC sp_fulltext_catalog 'My_FullDir', 'create'

--为全文索引标记表
EXEC sp_fulltext_table 'Document_Content','create','My_FullDir','PK_tb'

--创建全文索引
EXEC sp_fulltext_column 'Document_Content','DocumentContent','add',0x0804,'FileType'

GO

--插入测试数据
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农场A' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('B中国国营农场' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农C场' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国D国营农场' AS VARBINARY(MAX)), 'doc'

GO

--填充全文索引
EXEC sp_fulltext_table 'Document_Content','start_full'

--延时一下,等填充完成
WAITFOR DELAY '00:00:6'
GO

--查询数据
SELECT * FROM Document_Content WHERE contains([DocumentContent],'"国营"')

--删除测试数据库
USE MASTER
GO

DROP DATABASE TEST
...全文
389 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2013-01-15
  • 打赏
  • 举报
回复
指定正确的排序就行了
CREATE DATABASE HnAirDocumentContentSys COLLATE Chinese_PRC_CI_AS
jadesun 2013-01-15
  • 打赏
  • 举报
回复
VARBINARY的类型,能不能进行全文检索呢?
jadesun 2013-01-14
  • 打赏
  • 举报
回复
顶上去,给各位大牛出出主意。
jadesun 2013-01-14
  • 打赏
  • 举报
回复
各位,你们在做项目时,也应该遇上将pdf或者doc存储到数据库中的情况,这类的文档怎么进行全文索引? 另外版主提的要求已经修改完成,使用后面的SQL语句可进行测试。
szm341 2013-01-14
  • 打赏
  • 举报
回复
怎么说呢,如果是中文的话,那可能是你的数据编码有问题 CREATE DATABASE HnAirDocumentContentSys COLLATE Latin1_General_CI_AS CREATE DATABASE HnAirDocumentContentSys COLLATE Chinese_PRC_CI_AS 如果说十六进制的查询,还真不知道怎么比较呵呵
中国风 2013-01-14
  • 打赏
  • 举报
回复
检查你的语句,别贴一些有问题的语句出来 在表里建了唯一约束会生成对应的唯一索引 PK_tb--这是那个表的主健 --为全文索引标记表 EXEC sp_fulltext_table 'Document_Content','create','My_FullDir','PK_tb'
jadesun 2013-01-14
  • 打赏
  • 举报
回复
另外,由于项目原因,必须要把内容存储成VARBINARY格式。这样的全文索引应该支持啊。修改后的测试代码如下:

USE MASTER
GO

--创建数据库
CREATE DATABASE HnAirDocumentContentSys COLLATE Latin1_General_CI_AS
GO
 
--切换到相应的数据库
USE HnAirDocumentContentSys
GO
 
--创建数据表
CREATE TABLE Document_Content
(
	[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
	[Controller_Id] [uniqueidentifier] NOT NULL,
	[DocumentContent] VARBINARY(MAX) NULL,
	[FileType] VARCHAR(50)
)
GO

--创建唯一索引
CREATE UNIQUE INDEX UQ_Document_Content_Id ON Document_Content(Id)
GO

--为全文索引启用数据库
EXEC sp_fulltext_database 'enable'
 
--创建一个叫My_FullDif的全文目录
EXEC sp_fulltext_catalog 'My_FullDir', 'create' 
 
--为全文索引标记表
EXEC sp_fulltext_table 'Document_Content','create','My_FullDir','UQ_Document_Content_Id'
 
--创建全文索引
EXEC sp_fulltext_column 'Document_Content','DocumentContent','add',0x0804,'FileType'

GO
 
--插入测试数据
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农场A' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('B中国国营农场' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农C场' AS VARBINARY(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国D国营农场' AS VARBINARY(MAX)), 'doc'

GO

--填充全文索引
EXEC sp_fulltext_table 'Document_Content','start_full'
 
--延时一下,等填充完成
WAITFOR DELAY '00:00:6'
GO
 
--查询数据
SELECT * FROM Document_Content WHERE contains([DocumentContent],'"国营"')
 
--删除测试数据库
USE MASTER
GO
 
DROP DATABASE HnAirDocumentContentSys
jadesun 2013-01-14
  • 打赏
  • 举报
回复
测试这样的代码,也找不到具体的内容

USE MASTER
GO

--创建数据库
CREATE DATABASE HnAirDocumentContentSys COLLATE Latin1_General_CI_AS
GO
 
--切换到相应的数据库
USE HnAirDocumentContentSys
GO
 
--创建数据表
CREATE TABLE Document_Content
(
	[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
	[Controller_Id] [uniqueidentifier] NOT NULL,
	[DocumentContent] VARCHAR(MAX) NULL,
	[FileType] VARCHAR(50)
)
GO

--创建唯一索引
CREATE UNIQUE INDEX UQ_Document_Content_Id ON Document_Content(Id)
GO

--为全文索引启用数据库
EXEC sp_fulltext_database 'enable'
 
--创建一个叫My_FullDif的全文目录
EXEC sp_fulltext_catalog 'My_FullDir', 'create' 
 
--为全文索引标记表
EXEC sp_fulltext_table 'Document_Content','create','My_FullDir','UQ_Document_Content_Id'
 
--创建全文索引
EXEC sp_fulltext_column 'Document_Content','DocumentContent','add',0x0804

GO
 
--插入测试数据
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农场A' AS VARCHAR(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('B中国国营农场' AS VARCHAR(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国国营农C场' AS VARCHAR(MAX)), 'doc'
INSERT Document_Content SELECT NEWID(),NEWID(), CAST('中国D国营农场' AS VARCHAR(MAX)), 'doc'

GO

--填充全文索引
EXEC sp_fulltext_table 'Document_Content','start_full'
 
--延时一下,等填充完成
WAITFOR DELAY '00:00:6'
GO
 
--查询数据
SELECT * FROM Document_Content WHERE contains([DocumentContent],'"国营"')
 
--删除测试数据库
USE MASTER
GO
 
DROP DATABASE HnAirDocumentContentSys
szm341 2013-01-14
  • 打赏
  • 举报
回复
你把汉字都转换成 16进制格式了,那还能找得到啊

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧