2008-11-07 88 views
7

我在SQL Server 2005中建立索引PDF文件時遇到了一個奇怪的問題,並希望有人能提供幫助。我的數據庫有一個名爲MediaFile的表格,其中包含以下字段 - MediaFileId int identity pk,FileContent image和FileExtension varchar(5)。我有我的Web應用程序存儲在這個表中的文件內容沒有問題,並且能夠使用doc,xls等全文搜索沒有問題 - 唯一的文件擴展名不工作是PDF。當我在該表格上對保存在表格中的PDF文件存在的詞進行全文搜索時,這些文件不會返回到搜索結果中。在SQL Server 2005中對PDF文件使用全文搜索

操作系統是Windows Server 2003 SP2,我已經安裝了Adobe iFilter 6.0。繼this blog entry的指示,我執行以下命令:

exec sp_fulltext_service 'load_os_resources', 1; 
exec sp_fulltext_service 'verify_signature', 0; 

在此之後,我重新啓動SQL服務器,並驗證IFilter的對PDF的擴展是通過執行以下命令正確安裝:

select document_type, path from sys.fulltext_document_types where document_type = '.pdf' 

這將返回以下信息,這看起來是正確的:

DOCUMENT_TYPE:.PDF
路徑:C :\ Program Files文件\的Adobe \ PDF IFilter的6.0 \ PDFFILT.dll

然後我(重新)創建的索引上的媒體文件表,選擇FileContent作爲列索引和FileExtension作爲其類型。嚮導創建索引併成功完成。爲了測試,我在執行這樣的搜索:

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, '"house"'); 

這將返回包含這個詞的DOC文件,但沒有任何PDF文件,雖然我知道肯定有表中的PDF文件包含的字房屋

順便說一句,我得到了這個工作一次幾分鐘,在上面的搜索返回正確的PDF文件,但然後它沒有明顯的原因再次停止工作。

即使安裝了Adobe iFilter並且似乎已加載,有什麼想法可以阻止SQL Server 2005對索引PDF進行索引?

回答

7

謝謝伊萬。通過從零開始開始一切工作,最終完成這項工作。看起來事情完成的順序有很大的不同,並且在鏈接的博客上給出的關於加載iFilter後關閉「load_os_resources」設置的建議可能不是最好的選擇,因爲這會導致iFilter在SQL Server重新啓動時不加載。

如果我沒有記錯,步驟,最終爲我工作的順序如下:

  1. 確保表不已經有一個索引(如果有的話,刪除)
  2. 安裝Adobe iFilter
  3. 執行命令exec sp_fulltext_service'load_os_resources',1;
  4. 執行命令exec sp_fulltext_service'verify_signature',0;
  5. 重新啓動SQL Server
  6. 驗證PDF IFilter的安裝
  7. 上表創建全文索引
  8. 做全面的重新指數

雖然這並獲得成功,我確信我在它最終開始正常工作之前,執行了幾次這些步驟。

+0

***如何***:1.)驗證PDF iFilter是`編程式'安裝的? 2.)créate**全文索引**`編程式`? 3.)完全重新索引**`編程式`? – Kiquenet 2016-06-13 06:45:06

0

我剛剛掙扎了一個小時,但終於搞定了。我做你做的一切,所以只是儘量簡化查詢(我替換*與現場名稱和術語去掉雙引號):

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(FileContent, 'house') 

此外,當您創建全文索引,請確保您指定的語言。最後一件事是,也許你可以嘗試將字段類型從Image更改爲varbinary(MAX)