我已经搜索了每个站点、博客(甚至这里的答案),但似乎都没有。我在 SQL Server 2008 r2 中创建了一个数据库(全文搜索已激活并可用于创建的数据库),创建一个表(按照所有步骤创建为 Filestream 启用的表),创建目录,全文索引..和当我输入一个简单的测试查询时,它什么也不返回。在这里我将粘贴我用于创建数据库的所有代码以及其他所有内容。
CREATE DATABASE FSTest
ON PRIMARY(NAME = FSTest_data,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
\FSTest_data.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = FSTest_fs,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
\filestream')
LOG ON( NAME = FSTest_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
\FSTest_log.ldf')
GO
USE FSTest
CREATE TABLE dbo.Documentos
(
Id [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
Documento varchar(50),
Extension varchar(10),
Archivo varbinary(max) FILESTREAM NULL
)
CREATE FULLTEXT CATALOG FSCatalog AS DEFAULT
CREATE FULLTEXT INDEX ON dbo.Documentos
(Documentos, Archivo TYPE COLUMN Extension)
KEY INDEX UQ__Document__3214EC061CF15040
ON FSCatalog
WITH CHANGE_TRACKING AUTO
现在,我将使用计算机中的文件填充一行
DECLARE @Arch as VARBINARY(MAX)
SELECT @Arch = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET( BULK 'C:\cecar\inso.doc', SINGLE_BLOB) AS x
INSERT INTO dbo.Documentos (Id, Documento, Extension, Archivo)
VALUES(NEWID(),'Ingenieria del Software','.doc',@Arch)
至于他们上面的所有说明,它们都没有给我任何错误消息。仍然当我输入如下查询时:
SELECT *
FROM Documentos
WHERE CONTAINS(Archivo, 'crisis') //The word 'crisis' is contained in the file, I double checked..
或者
SELECT *
FROM Documentos
WHERE FREETEXT(Archivo, 'crisis')
或者
SELECT *
FROM Documentoss
WHERE CONTAINS(Archivo, '"crisis*"')
我什么也没得到..结果是空白的..甚至没有空行,什么都没有。我什至认为这可能是由于“Documento”字段中的文档名称过长,所以我输入了一个新值,例如“inso”,结果仍然相同。我究竟做错了什么?并且请不要给我一些指向 Microsoft 网站的链接,我只需要一个关于如何正确执行此操作的示例以使其正常工作(我不需要通过其名称中的某些单词来查找文档,而是通过其中的单词来查找)。
我提前感谢您的帮助。