如何在MSSQL Server 2017中使用Adobe iFilter 11

问题描述 投票:2回答:2

我正在尝试让iFilter工作,我正在使用MS SQL Server 2017/2016开发人员版本运行Windows 10 64位。我从Adobe website下载了64位版本的iFilter 11,我跟着他们的导游here。尽管它适用于MS SQL 2008/2012,但它仍然很容易理解。

我的问题是全文搜索不会返回任何结果。

我安装了64位iFilter 11并将其添加到系统PATH中。我确认这是通过重新启动pc并从cmd中找到DLL来实现的。

之后,因为我没有MSSQL Server的FullText搜索组件,所以我安装了它并启动了SQL全文过滤器守护程序启动器(我还重新启动了主MSSQL Server实例)。

我已经有了一个数据库,显然默认启用了FullText搜索,所以我继续安装。

我加载了组件并通过运行以下查询验证了所有内容都已被识别:

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')

通过查询,我能够:

  • 验证是否已安装FullText Search组件
  • 我能够加载不同的过滤器并验证是否正在加载iFilter。
  • 我还确保在数据库上启用了全文,即使默认情况下它已启用。
  • 我创建了一个表和一个目录,并指定了它将用于最复杂的语言(法语)。
  • 创建我的表和我的目录后,我运行了一个查询来验证PdfText列是否有文本索引,并且确实如此。

遵循Adobe自己的指南,我创建了他们的示例WinForm应用程序来上传PDF。我上传了2个PDF,一个用法语,另一个用英语。然后我搜索了应该包含在其中的简单单词但没有返回结果。

我已经尝试重建目录并重建我的pdf表的所有索引,但它没有改变结果。

我尝试从Adobe PDFiFilter64installer.zip下载文件ftp来安装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可能不适用于较新的操作系统和较新版本的MSSQL。

pdf search full-text-search sql-server-2017 ifilter
2个回答
0
投票

尝试使用iFilter 9 - ftp://ftp.adobe.com/pub/adobe/acrobat/win/9.x/PDFiFilter64installer.zip并将其安装到一个短路径(C:\ iFilter适用于我)。


0
投票

我得到它在SQL Server 2019上工作

按照这些提示https://dba-presents.com/index.php/databases/sql-server/48-full-text-search-with-pdf-documents-in-sql-server-2014使用更新的URL到iFilter:https://supportdownloads.adobe.com/thankyou.jsp?ftpID=5542&fileID=5550我使用了我的iFilter路径的短名称版本(即c:\ SQLSer~1 \ IFilter)我有一点挑战让SQL Server帐户访问IFilter \ bin目录,但使用这个https://www.thewindowsclub.com/fix-failed-to-enumerate-objects-in-the-container来帮助我顺利完成。

在我完成所有步骤后,我重新启动了计算机(因为没有这样做对我不起作用),现在它适用于我。希望这对其他人有用。

© www.soinside.com 2019 - 2024. All rights reserved.