我在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.
答案 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本机条目,如下所示:
转到
HKEY_CLASSES_ROOT\.pdf\PersistentHandler
。如果密钥不存在,请创建密钥。验证值为
1AA9BF05-9A97-48c1-BA28-D9DCE795E93C
。如果Acrobat或Reader安装使用F6594A6D-D57F-4EFD-B2C3-DCD9779E382E
覆盖了该条目,请将其恢复为原始值。如果您安装了任何第三方PDF iFilters,请重新安装。
- 醇>
重新启动Windows搜索服务:
- 转到任务管理器>服务。
- 选择WSearch。
- 单击鼠标右键,然后选择“重新启动”。