我在 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'
这将返回以下信息,看起来正确:
文档类型:.pdf
路径:C:\Program Files\Adobe\PDF IFilter 6.0\PDFFILT.dll
然后我(重新)在 MediaFile 表上创建索引,选择 FileContent 作为要索引的列,选择 FileExtension 作为其类型。向导创建索引并成功完成。为了测试,我正在执行这样的搜索:
SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, '"house"');
这将返回包含该术语的 DOC 文件,但不返回任何 PDF 文件,尽管我知道表中肯定有包含单词house的 PDF 文件。
顺便说一句,我让这个工作了几分钟,上面的搜索返回了正确的 PDF 文件,但后来它又无缘无故地停止工作了。
关于什么可能阻止 SQL Server 2005 索引 PDF 的任何想法,即使安装了 Adobe iFilter 并且似乎已加载?