1

私はすべてのサイト、ブログ (ここでの回答も) を検索しましたが、どれも機能していないようです。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」のような新しい値を入力しましたが、結果は同じです。私は何を間違っていますか?また、マイクロソフトのサイトへのリンクを提供しないでください。これが機能するように、これを正しく行う方法の例が必要なだけです (名前に含まれる単語でドキュメントを検索する必要はありませんが、その中の単語でドキュメントを検索する必要はありません)。

よろしくお願いします。

4

1 に答える 1

0

上記のスクリプトのエラーをまだ理解していない人のために、全文 INDEX を作成するステートメントは次のように読む必要があります --

CREATE FULLTEXT INDEX ON dbo.Documentos

(Documento, Archivo TYPE COLUMN Extension)
KEY INDEX UQ__Document__3214EC061CF15040
ON FSCatalog

最初のパラメーターは、"Documentos" (テーブル自体) ではなく、"Documento" (テーブル内の列) である必要があります。

于 2014-11-19T14:56:28.277 に答える