2008-11-07 45 views
7

我在SQL Server 2005中建立索引PDF文件时遇到了一个奇怪的问题,并希望有人能提供帮助。我的数据库有一个名为MediaFile的表格,其中包含以下字段 - MediaFileId int identity pk,FileContent image和FileExtension varchar(5)。我有我的Web应用程序存储在这个表中的文件内容没有问题,并且能够使用doc,xls等全文搜索没有问题 - 唯一的文件扩展名不工作是PDF。当我在该表格上对保存在表格中的PDF文件存在的词进行全文搜索时,这些文件不会返回到搜索结果中。在SQL Server 2005中对PDF文件使用全文搜索

操作系统是Windows Server 2003 SP2,我已经安装了Adobe iFilter 6.0。继this blog entry的指示,我执行以下命令:

exec sp_fulltext_service 'load_os_resources', 1; 
exec sp_fulltext_service 'verify_signature', 0; 

在此之后,我重新启动SQL服务器,并验证IFilter的对PDF的扩展是通过执行以下命令正确安装:

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

然后我(重新)创建的索引上的媒体文件表,选择FileContent作为列索引和FileExtension作为其类型。向导创建索引并成功完成。为了测试,我在执行这样的搜索:

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, '"house"'); 

这将返回包含这个词的DOC文件,但没有任何PDF文件,虽然我知道肯定有表中的PDF文件包含的字房屋

顺便说一句,我得到了这个工作一次几分钟,在上面的搜索返回正确的PDF文件,但然后它没有明显的原因再次停止工作。

即使安装了Adobe iFilter并且似乎已加载,有什么想法可以阻止SQL Server 2005对索引PDF进行索引?

回答

7

谢谢伊万。通过从零开始开始一切工作,最终完成这项工作。看起来事情完成的顺序有很大的不同,并且在链接的博客上给出的关于加载iFilter后关闭“load_os_resources”设置的建议可能不是最好的选择,因为这会导致iFilter在SQL Server重新启动时不加载。

如果我没有记错,步骤,最终为我工作的顺序如下:

  1. 确保表不已经有一个索引(如果有的话,删除)
  2. 安装Adobe iFilter
  3. 执行命令exec sp_fulltext_service'load_os_resources',1;
  4. 执行命令exec sp_fulltext_service'verify_signature',0;
  5. 重新启动SQL Server
  6. 验证PDF IFilter的安装
  7. 上表创建全文索引
  8. 做全面的重新指数

虽然这并获得成功,我确信我在它最终开始正常工作之前,执行了几次这些步骤。

+0

***如何***:1.)验证PDF iFilter是`编程式'安装的? 2.)créate**全文索引**`编程式`? 3.)完全重新索引**`编程式`? – Kiquenet 2016-06-13 06:45:06

0

我刚刚挣扎了一个小时,但终于搞定了。我做你做的一切,所以只是尽量简化查询(我替换*与现场名称和术语去掉双引号):

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(FileContent, 'house') 

此外,当您创建全文索引,请确保您指定的语言。最后一件事是,也许你可以尝试将字段类型从Image更改为varbinary(MAX)

相关问题