sql-server - 全文索引未从 pdf 文件流返回任何结果

标签 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 文件正在索引 justfined?


更新 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.

最佳答案

我遇到了同样的问题。我在 SQL Server 2012 Standard 上有一个文件流表,其中填充了 PDF。我下载了 Adob​​e 的 iFilter 11 并在 PDF 上创建了全文索引。我无法使其在生产中工作——文件流表已填充,但全文搜索没有,日志中出现此错误:(SQL Server 日志文件夹,SQLFTxxxxx.LOG): 警告:在为表或索引 View 填充全文索引期间未找到合适的过滤器

事实证明,文件上的存档位已设置为打开。当我关闭它时,全文搜索会填充并且搜索开始工作。

希望这对其他人有帮助。此外,如果您了解它为何以这种方式工作,请告诉我们。从研究存档位来看,它似乎表明该文件是新文件或已更改并且需要备份。谢谢!

关于sql-server - 全文索引未从 pdf 文件流返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388250/

相关文章:

ios - 在UIWebview ios中显示特定的pdf页面

sql - 我需要删除小数点后的前导零

sql-server - 让SQL Server使用索引查找+键查找代替聚集索引扫描,不使用WITH (FORCESEEK)

java - 如何在内存中创建日历图像以添加到 PDF?

带有二进制的 SQL WHERE 子句

python - 从 PDF 读取并存储在数据框中时如何保留表结构?

excel - Excel Slicer 中的 SSAS 维度安全结果

sql - 如何在 SQL Server 中获取最近和第二个最近的值

mysql - 列数未知的 SQL 查询

sql - 更新排他锁转换