Прежде всего, спасибо за пришедшие здесь:поиска SQL FullText для PDF файлов
Я написал сценарий в SQL смог найти слова в файл, с большим количеством помощи некоторых веб-сайтов (http://dzapart.blogspot.fr/2012/04/full-text-search-with-pdf-in-microsoft.html)
проблема здесь:
у меня есть "C: \ TP3_compte_rendu.pdf", который является PDF-файл, и 'C: \ TP3.txt' текст этого файла:
Итак, два файлы имеют одинаковый текст.
Затем я запускаю мой код для создания таблицы/индекса/каталог:
-- Creation de la table
CREATE TABLE dbo.DocumentFiles
(
DocumentId uniqueidentifier Primary KEY DEFAULT newsequentialid(),
Nom nvarchar(50) NOT NULL,
Extension nvarchar(10) NOT NULL,
Description nvarchar(1000) NULL,
FileStream_Id uniqueidentifier NOT NULL,
Fichier varbinary(MAX) NOT NULL DEFAULT (0x)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-- Creation de l'index
EXEC sp_fulltext_service 'load_os_resources',1
EXEC sp_fulltext_service 'verify_signature', 0
EXEC sp_fulltext_database 'enable'
GO
IF NOT EXISTS (SELECT TOP 1 1 FROM sys.fulltext_catalogs WHERE name = 'Ducuments_Catalog')
BEGIN
EXEC sp_fulltext_catalog 'Ducuments_Catalog', 'create';
END
DECLARE @indexName nvarchar(255) = (SELECT Top 1 i.Name from sys.indexes i
Join sys.tables t on i.object_id = t.object_id
WHERE t.Name = 'DocumentFiles' AND i.type_desc = 'CLUSTERED')
PRINT @indexName
-- Creation du catalogue
EXEC sp_fulltext_table 'DocumentFiles', 'create', 'Ducuments_Catalog', @indexName
EXEC sp_fulltext_column 'DocumentFiles', 'Fichier', 'add', 0, 'Extension'
EXEC sp_fulltext_table 'DocumentFiles', 'activate'
EXEC sp_fulltext_catalog 'Ducuments_Catalog', 'start_full'
EXEC sp_help_fulltext_system_components 'filter';
ALTER FULLTEXT INDEX ON [dbo].[DocumentFiles] ENABLE
ALTER FULLTEXT INDEX ON [dbo].[DocumentFiles] SET CHANGE_TRACKING = AUTO
Я использую IFilter сделать полнотекстовый поиск по PDF-файлов:
SELECT document_type, path FROM sys.fulltext_document_types WHERE document_type = '.pdf'
Он показывает мне:
.pdf | C:\Program Files\Adobe\Adobe PDF iFilter 11 for 64-bit platforms\bin\PDFFilter.dll
Потому что я вижу «.pdf» и хорошую .dll, все в порядке, установлен IFilter.
Итак, я ставлю в этой таблице на два файла, .txt и .pdf с тем же текстом:
-- Entrée du document
INSERT INTO dbo.DocumentFiles(Nom, Extension,FileStream_Id, Fichier)
SELECT
'TP3.pdf' AS Nom
, 'pdf' AS Extension
,'0E984725-C51D-4BF4-9960-E1C80E27ABA0wrong' AS FileStream_Id
, * FROM OPENROWSET(BULK 'C:\TP3_compte_rendu.pdf', SINGLE_BLOB)
AS Fichier;
GO
-- Entrée du document
INSERT INTO dbo.DocumentFiles(Nom, Extension,FileStream_Id, Fichier)
SELECT
'TP3.txt' AS Nom
, 'txt' AS Extension
,'0E984725-C51D-4BF4-9960-E1C80E27ABB0wrong' AS FileStream_Id
, * FROM OPENROWSET(BULK 'C:\TP3.txt', SINGLE_BLOB)
AS Fichier;
GO
Затем поиска:
SELECT d.* FROM dbo.DocumentFiles d
WHERE Contains(d.Fichier, '%propose%')
И это показывает мне .. . Только .txt.
С таким же текстом видно только .txt, но IFilyter установлен .. Я действительно не понимаю.
Решение: IFilter 11 прослушивается, вы должны использовать 9-ю версию: но мой код хорошо, поэтому я надеюсь, что это поможет кому-то! – Pingu