我正在尝试使iFilter正常工作,我正在运行Windows 10 64位以及MS SQL Server 2017/2016开发人员版本。我已经从Adobe website下载了iFilter 11的64位版本,并遵循了他们的指南here。即使是用于MS SQL 2008/2012,也仍然很容易遵循。
我的问题是全文搜索不会返回任何结果。
我安装了64位iFilter 11,并将其添加到系统 PATH 中。我通过重新启动PC并从cmd查找DLL来确认这是可行的。
此后,因为我没有MSSQL Server的全文本搜索组件,所以我安装了它并启动了SQL全文过滤器守护程序启动器(我还重新启动了主MSSQL Server实例)。
我已经有一个数据库,显然现在默认情况下启用了全文搜索,因此我继续进行安装。
我加载了组件,并通过运行以下查询验证了所有内容都可以识别:
GO
PRINT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')
exec sp_fulltext_service 'load_os_resources', 1
exec sp_fulltext_service 'verify_signature', 0
/* Verify if iFilter is installed */
SELECT * FROM sys.fulltext_document_types WHERE document_type = '.pdf'
GO
/* Restart MSSQL before continuing */
/* Enable fulltext search on the database */
Use [db]
GO
EXEC sp_fulltext_database 'enable'
GO
Use [db]
DROP TABLE pdfifiltertable
GO
CREATE TABLE pdfifiltertable(
PdfID INT IDENTITY NOT NULL,
PdfFileName VARCHAR(MAX),
Ext VARCHAR(10),
PdfText VARBINARY(MAX),
CONSTRAINT PK_PdfID PRIMARY KEY (PdfID)
)
GO
CREATE FULLTEXT CATALOG pdfCatalog AS DEFAULT
GO
CREATE FULLTEXT INDEX ON pdfifiltertable([PdfText] Type column [Ext] LANGUAGE 'French'
) KEY INDEX PK_PdfID with change_tracking auto
GO
/* Check if the table correctly have a fulltext_index */
SELECT distinct
object_name(fic.[object_id]) table_name,
[name] column_name
FROM
sys.fulltext_index_columns fic
INNER JOIN sys.columns c
ON c.[object_id] = fic.[object_id]
AND c.[column_id] = fic.[column_id]
GO
/* Try to search (doesn't work) */
SELECT PdfFileName
FROM [db].[dbo].[pdfifiltertable]
WHERE CONTAINS(PdfText, 'Adobe')
通过查询,我能够:
正在加载。
尽管默认情况下它是打开的。
它将用于(法语)的语言。
PdfText列具有文本索引,并且确实如此。
按照Adobe自己的指南,我创建了他们的示例WinForm应用程序来上载PDF。我上传了2个PDF,一个是法语,另一个是英语。然后,我搜索了应该包含在其中的简单单词,但未返回任何结果。
我尝试重建目录并重建pdf表的所有索引,但没有改变结果。
我尝试通过从Adobe ftp下载文件
PDFiFilter64installer.zip
来安装iFilter 9,以防最新版本出现任何问题。不幸的是,它也不起作用。我已经在MSSQL服务器上运行了探查器,没有抛出任何错误。我搜索并收集了多个相关问题,这些问题有助于我进行完整的故障排除。我将它们链接起来,以便它们更容易一起搜索:
SQL Server : full-text pdf search results using contains and ifilters-未回答
Using full-text search with PDF files in SQL Server 2008-MSSQL 2017没有有效的答案。
Using full-text search with PDF files in SQL Server 2005-也不适用于MSSQL 2017。
我在想,也许iFilter不能在更新的OS和更新的MSSQL版本上运行。
最佳答案
尝试使用iFilter 9-ftp://ftp.adobe.com/pub/adobe/acrobat/win/9.x/PDFiFilter64installer.zip并将其安装到短路径(C:\ iFilter适用于我)。