2008-11-07 35 views
7

Tôi gặp sự cố lạ khi lập chỉ mục các tệp PDF trong SQL Server 2005 và hy vọng ai đó có thể trợ giúp. Cơ sở dữ liệu của tôi có một bảng gọi là MediaFile với các trường sau - MediaFileId int identity pk, FileContent image và FileExtension varchar (5). Tôi đã có ứng dụng web của tôi lưu trữ nội dung tập tin trong bảng này không có vấn đề, và có thể sử dụng tìm kiếm toàn văn trên doc, xls, vv mà không có vấn đề - phần mở rộng tập tin duy nhất không hoạt động là PDF. Khi thực hiện tìm kiếm toàn văn trên bảng này cho các từ mà tôi biết tồn tại bên trong các tệp PDF được lưu trong bảng, các tệp này không được trả lại trong kết quả tìm kiếm.Sử dụng tìm kiếm toàn văn bản với các tệp PDF trong SQL Server 2005

Hệ điều hành là Windows Server 2003 SP2 và tôi đã cài đặt Adobe iFilter 6.0. Theo các hướng dẫn trên this blog entry, tôi thực hiện các lệnh sau:

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

Sau này, tôi khởi động lại SQL Server, và xác nhận rằng IFilter cho các phần mở rộng PDF được cài đặt một cách chính xác bằng cách thực hiện lệnh sau:

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

này trả về các thông tin sau, mà có vẻ đúng:

DOCUMENT_TYPE: .pdf
đường dẫn: C : \ Program Files \ Adobe \ PDF IFilter 6.0 \ PDFFILT.dll

Sau đó tôi đã tạo chỉ mục trên bảng MediaFile, chọn FileContent làm cột để lập chỉ mục và FileExtension làm loại của nó. Trình hướng dẫn tạo chỉ mục và hoàn tất thành công. Để kiểm tra, tôi đang thực hiện tìm kiếm như sau:

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

Điều này trả về tệp DOC có chứa cụm từ này, nhưng không có tệp PDF, mặc dù tôi biết chắc chắn có tệp PDF trong bảng chứa từ nhà.

Ngẫu nhiên, tôi đã làm việc này một lần trong vài phút, khi tìm kiếm ở trên trả về các tệp PDF chính xác, nhưng sau đó nó ngừng hoạt động trở lại mà không có lý do rõ ràng.

Bất kỳ ý tưởng nào về những gì có thể ngăn SQL Server 2005 lập chỉ mục PDF, mặc dù Adobe iFilter được cài đặt và có vẻ như được tải?

Trả lời

7

Cảm ơn Ivan. Quản lý để cuối cùng có được điều này làm việc bằng cách bắt đầu tất cả mọi thứ từ đầu. Nó có vẻ như thứ tự mà mọi thứ được thực hiện tạo nên sự khác biệt lớn và lời khuyên được đưa ra trên blog được liên kết để tắt cài đặt 'load_os_resources' sau khi tải iFilter có lẽ không phải là tùy chọn tốt nhất, vì điều này sẽ gây ra iFilter không được tải khi máy chủ SQL được khởi động lại.

Nếu tôi nhớ chính xác, trình tự các bước mà cuối cùng làm việc đối với tôi là như sau:

  1. Đảm bảo rằng bảng không có một chỉ số đã (và nếu như vậy, hãy xóa nó)
  2. Cài đặt Adobe iFilter
  3. Thực hiện lệnh exec sp_fulltext_service 'load_os_resources', 1;
  4. Thực hiện lệnh exec sp_fulltext_service 'verify_signature', 0;
  5. Restart SQL Server
  6. Xác PDF IFilter được cài đặt
  7. Tạo chỉ mục toàn văn trên bàn
  8. làm đầy đủ tái-index

Mặc dù điều này đã làm các trick, tôi khá chắc chắn tôi thực hiện các bước này một vài lần trước khi nó bắt đầu hoạt động đúng cách.

+0

*** HƯỚNG DẪN ***: 1.) xác minh PDF iFilter được cài đặt 'lập trình'? 2.) créate ** toàn văn chỉ mục ** 'lập trình'? 3.) làm ** đầy đủ chỉ số lại ** 'lập trình'? – Kiquenet

0

Tôi đã vật lộn với nó trong một giờ, nhưng cuối cùng nó đã hoạt động. Tôi đã làm tất cả những gì bạn đã làm, vì vậy chỉ cần cố gắng đơn giản hóa việc truy vấn (Tôi thay * với tên trường và loại bỏ dấu ngoặc kép vào hạn):

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

Ngoài ra khi bạn tạo chỉ mục toàn văn bản đảm bảo bạn chỉ định ngôn ngữ. Và điều cuối cùng là có thể bạn có thể cố gắng thay đổi loại trường từ Image thành varbinary(MAX).

Các vấn đề liên quan