我正在尝试使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')

通过查询,我能够:
  • 验证是否已安装全文搜索组件
  • 我能够加载不同的过滤器并验证iFilter是否为
    正在加载。
  • 我也确保在数据库上启用了全文本
    尽管默认情况下它是打开的。
  • 我创建了一个表和一个目录,并指定了最复杂的
    它将用于(法语)的语言。
  • 创建表和目录后,我运行查询以验证
    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适用于我)。

    10-06 02:05