当前位置:  开发笔记 > 编程语言 > 正文

在SQL Server 2005中使用PDF文件进行全文搜索

如何解决《在SQLServer2005中使用PDF文件进行全文搜索》经验,为你挑选了1个好方法。

我在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\Adob​​e\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并且似乎已加载?



1> Mun..:

谢谢伊万.管理最终通过从头开始一切来实现这一点.似乎完成任务的顺序会产生很大的不同,并且在加载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已安装

    在表上创建全文索引

    做完全重新索引

虽然这样做了,但我很确定在最终开始正常工作之前我已经执行了几次这些步骤.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有