搜索存储在blob字段中的文件内的内容

时间:2014-11-20 13:19:54

标签: sql-server sql-server-2008-r2 full-text-search

我的应用程序的数据库将文件存储在FILESTRAM blob字段中。我有一个专门的表格,我保存所有文件。

这是表格(DOCUMENT是blob字段):

CREATE TABLE [dbo].[DOC_FILES](
    [ID_DOC_FILE] [int] NOT NULL,
    [DOCUMENT] [varbinary](max) FILESTREAM  NULL,
    [GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [FILE_SIZE] [int] NULL,
 CONSTRAINT [PK_DOC_FILES] PRIMARY KEY CLUSTERED 
(
    [ID_DOC_FILE] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY] FILESTREAM_ON [MyDatabase],
UNIQUE NONCLUSTERED 
(
    [GUID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [MyDatabase]

我想要执行的是在文件中搜索。

我想将文件定位为pdf,doc,docx,rtf,txt。

是否可以进行这样的查询:

SELECT ID_DOC_FILES FROM DOC_FILES
WHERE DOCUMENT *CONTAINS* 'my search string' //*CONTAINS* of course is just for demonstration...

...

它应该返回包含“我的搜索字符串”的pfd,doc,docx,rt,txt文件的所有ID。

解决方法可能是创建一个INDEXED_CONTENT字段,将文本内容保存为文本(我可以逐个处理所有文件以提取文本)。

无论如何,在此之前,我想确保在blob内搜索是不可能的。

谢谢。

0 个答案:

没有答案