我正在使用SQL Server 2012的“FILETABLE”功能处理一堆Office和PDF文档,并在此基础上使用全文搜索。我已经配置了我的SQL Server以支持全文搜索和filestream,并创建了一个“FILETABLE”,将800多个各种类型的文档转储到文件夹中,所有这些都很好地工作。
为了能够全文索引MS Office文档,我安装了MS Filter Pack 2.0,为了处理PDF文件,我下载了Adobe的iFilter for PDF并全部安装。
现在我创建了一个全文目录:
为了能够全文索引MS Office文档,我安装了MS Filter Pack 2.0,为了处理PDF文件,我下载了Adobe的iFilter for PDF并全部安装。
现在我创建了一个全文目录:
CREATE FULLTEXT CATALOG DocumentCatalog
WITH ACCENT_SENSITIVITY = OFF
在FILETABLE
表上创建一个全文索引:
CREATE FULLTEXT INDEX
ON dbo.Documents(name, file_type, file_stream)
KEY INDEX [PK_Document]
ON DocumentCatalog
看起来一切都运行良好。过了一会儿,我可以开始搜索800多个文档:
SELECT
stream_id, name, file_type, cached_file_size,
file_stream.GetFileNamespacePath(1)
FROM
dbo.Documents
WHERE
CONTAINS(*, 'Silverlight')
这个程序可以很好且快速地找到MS Office文档中的内容(*.doc, *.docx, *.ppt, *.pptx, *.xls, *.xlsx)。
但是,PDF文件中的文本似乎无法被找到 :-(
有什么想法吗?我在安装过程中没有出现任何错误,一切都正常——我可以在SQL Server的过滤器中看到.pdf文件类型:
SELECT *
FROM sys.fulltext_document_types
返回:
.pdf E8978DA6-047F-4E3D-9C78-CDBE46041603
C:\Program Files\Adobe\Adobe PDF iFilter 11 for 64-bit platforms\bin\PDFFilter.dll
11.0.1.36 Adobe Systems, Inc.
但是不知何故,这些PDF文件似乎没有被索引。我能找到哪些文件实际被索引了,以及在生成过程中是否出错吗?我在哪里可以找到这些信息?