全文索引不返回pdf文件流的结果

时间:2014-08-19 16:14:10

标签: sql-server pdf sql-server-2012 full-text-search filestream

我在Windows 8.1 x64计算机上运行SQL Server 2012上的文件流表,已经存储了一些PDF和TXT文件,因此我决定使用以下命令创建全文索引以搜索这些文件:

CREATE FULLTEXT CATALOG FileStreamFTSCatalog AS DEFAULT;

CREATE FULLTEXT INDEX ON storage
(FileName Language 1046, File TYPE COLUMN FileExtension Language 1046)
KEY INDEX PK__storage__3214EC077DADCE3C
ON FileStreamFTSCatalog
WITH CHANGE_TRACKING AUTO;

然后我在阅读了一些与我有同样问题的人之后发送了这些命令:

EXEC sp_fulltext_service @action='load_os_resources', @value=1;
EXEC sp_fulltext_service 'verify_signature', 0;
EXEC sp_fulltext_service 'update_languages';
Exec sp_fulltext_service 'ft_timeout', 600000;
Exec sp_fulltext_service 'ism_size',@value=16;
EXEC sp_fulltext_service 'restart_all_fdhosts';
EXEC sp_help_fulltext_system_components 'filter';
reconfigure with override

我可以看到PDF IFilter已配置

filter  .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.

我甚至可以做一个

select * from storage
where contains(*, 'data')

但它只返回索引的TXT文件,所以我想知道:我还有什么需要做的才能开始索引我的PDF吗?或者是否有必要创建另一个表并重新插入我已存储的所有这些PDF,即使TXT文件已被索引刚刚定义?


更新1:

打开SQLFTXXX.LOG我收到此消息(对于FileTable):

2014-08-20 06:32:09.48 spid29s     Warning: No appropriate filter was found during full-text index population for table or indexed view '[text_storage].[dbo].[storage_table]' (table or indexed view ID '355584405', database ID '7'), full-text key value '篰磧'. Some columns of the row were not indexed.

这一个(对于FileStream表):

2014-08-19 22:14:50.58 spid20s     Warning: No appropriate filter was found during full-text index population for table or indexed view '[text_storage].[dbo].[storage]' (table or indexed view ID '674101442', database ID '7'), full-text key value '1797'. Some columns of the row were not indexed.

4 个答案:

答案 0 :(得分:1)

我必须对SQL Server 2014和2017使用Adobe iFilter 9。

ftp://ftp.adobe.com/pub/adobe/acrobat/win/9.x/PDFiFilter64installer.zip

答案 1 :(得分:0)

我终于找到了一个解决方案,在尝试使用相同的错误消息的Adobe和Foxit Ifilter之后,我发现其他Ifilter名为“PDFlib”,我下载了它并按照its instructions进行了制作它可用于SQL Server,重建了索引,现在我的pdf已编​​入索引并可以搜索。

相信如果我对其他ifilters遵循这些相同的说明,他们也会工作,在我完成测试并更新结果后再试一试。

答案 2 :(得分:0)

我遇到了同样的问题。我在SQL Server 2012 Standard上有一个填充了PDF的文件流表。我下载了Adobe的iFilter 11,并在PDF上创建了一个全文索引。我无法在生产中使其工作 - 文件流表已填充,但未进行全文搜索,并且日志中出现此错误:(SQL Server日志文件夹,SQLFTxxxxx.LOG): 警告:在表或索引视图的全文索引填充期间未找到适当的筛选器

原来,文件上的存档位设置为on。当我关闭它时,填充了全文搜索并开始搜索。

希望这有助于其他人。此外,如果您了解其工作原理,请告诉我们。通过研究存档位,它似乎表明该文件是新的或已更改并需要备份。谢谢!

答案 3 :(得分:0)

还有另一种可能解决这个问题的方法;安装某些版本的Acrobat或Reader可能会破坏PDF iFilter。 Adobe发布此解决方法:

https://helpx.adobe.com/acrobat/kb/pdf-search-breaks-110-install.html

  

解决方案

     

执行以下操作之一:

     

更新到Acrobat / Reader 11.0.4或更高版本。该问题已在11.0.4版中修复。   Windows 8不支持PDF iFilter 9,从此处更新到PDF iFilter 11。   如果您无法更新Acrobat / Reader或PDF iFilter,则可采用以下解决方法。

     

解决方法:将注册表项还原到Windows 8本机条目,如下所示:

     
      
  1. 转到HKEY_CLASSES_ROOT\.pdf\PersistentHandler。如果密钥不存在,请创建密钥。

  2.   
  3. 验证值为1AA9BF05-9A97-48c1-BA28-D9DCE795E93C。如果Acrobat或Reader安装使用F6594A6D-D57F-4EFD-B2C3-DCD9779E382E覆盖了该条目,请将其恢复为原始值。

  4.   
  5. 如果您安装了任何第三方PDF iFilters,请重新安装。

  6.   
  7. 重新启动Windows搜索服务:

         
        
    1. 转到任务管理器>服务。
    2.   
    3. 选择WSearch。
    4.   
    5. 单击鼠标右键,然后选择“重新启动”。
    6.   
  8.