私はすべてのサイト、ブログ (ここでの回答も) を検索しましたが、どれも機能していないようです。SQL Server 2008 r2 で db を作成し (フルテキスト検索がアクティブ化され、作成されたデータベースで使用可能になります)、テーブルを作成し (すべての手順に従って 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」のような新しい値を入力しましたが、結果は同じです。私は何を間違っていますか?また、マイクロソフトのサイトへのリンクを提供しないでください。これが機能するように、これを正しく行う方法の例が必要なだけです (名前に含まれる単語でドキュメントを検索する必要はありませんが、その中の単語でドキュメントを検索する必要はありません)。
よろしくお願いします。