我已經搜索了每個站點,博客(甚至是這裏的答案),但似乎沒有任何工作。我在SQL Server 2008 R2中創建了一個數據庫(已激活全文搜索並可用於創建的數據庫),創建一個表(按照所有步驟創建爲FileStream啓用的表),創建目錄,全文索引..和當我輸入一個簡單的測試查詢時,它不會返回任何內容。在這裏,我將粘貼用於創建數據庫和其他所有代碼的所有代碼。現在在varbinary(max)列上的全文搜索不起作用
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',結果仍然相同。我究竟做錯了什麼?並且請不要給我一些微軟網站的鏈接,我只需要一個關於如何正確執行此操作的例子,這樣它就可以工作(我不需要通過名稱中的某個詞找到文檔,而是通過其中的文字找到文檔)。
我事先感謝您的幫助。
完全一樣的問題。它適用於一個數據庫,不適用於另一個數據庫。他們之間沒有區別。 – 2013-10-18 06:55:53