我在SQL Server 2005中索引PDF文件时遇到了一个奇怪的问题,希望有人可以提供帮助.我的数据库有一个名为MediaFile的表,其中包含以下字段:MediaFileId int identity pk,FileContent image和FileExtension varchar(5).我的Web应用程序在此表中存储文件内容没有任何问题,并且能够在doc,xls等上使用全文搜索而没有任何问题 - 唯一无法正常工作的文件扩展名是PDF.在此表上执行全文搜索时,我知道在表中保存的PDF文件中存在的单词,这些文件不会在搜索结果中返回.
操作系统是Windows Server 2003 SP2,我安装了Adobe iFilter 6.0.按照此博客条目上的说明,我执行了以下命令:
exec sp_fulltext_service 'load_os_resources', 1; exec sp_fulltext_service 'verify_signature', 0;
在此之后,我重新启动了SQL Server,并通过执行以下命令验证是否正确安装了PDF扩展的iFilter:
select document_type, path from sys.fulltext_document_types where document_type = '.pdf'
这将返回以下信息,看起来是正确的:
document_type:.pdf
路径:C:\ Program Files\Adobe\PDF IFilter 6.0\PDFFILT.dll
然后我(重新)在MediaFile表上创建了索引,选择FileContent作为索引列,将FileExtension作为其类型.该向导将创建索引并成功完成.为了测试,我正在执行这样的搜索:
SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, '"house"');
这将返回包含此术语但不包含任何PDF文件的DOC文件,但我知道表中肯定有PDF文件包含单词house.
顺便说一句,我让这个工作了几分钟,上面的搜索返回了正确的PDF文件,但后来它没有明显的原因再次停止工作.
有关什么可以阻止SQL Server 2005索引PDF的任何想法,即使安装了Adobe iFilter并且似乎已加载?
谢谢伊万.管理最终通过从头开始一切来实现这一点.似乎完成任务的顺序会产生很大的不同,并且在加载iFilter后关联博客上关闭'load_os_resources'设置的建议可能不是最好的选择,因为这会导致iFilter重新启动SQL Server时不加载.
如果我没记错的话,最终对我有用的步骤顺序如下:
确保表中没有索引(如果是,则删除它)
安装Adobe iFilter
执行命令exec sp_fulltext_service'load_os_resources',1;
执行命令exec sp_fulltext_service'verify_signature',0;
重新启动SQL Server
验证PDF iFilter已安装
在表上创建全文索引
做完全重新索引
虽然这样做了,但我很确定在最终开始正常工作之前我已经执行了几次这些步骤.