7

SQL Server 2005 で PDF ファイルのインデックスを作成する際に奇妙な問題が発生しました。誰かが助けてくれることを願っています。私のデータベースには、MediaFileId int identity pk、FileContent image、および FileExtension varchar(5) というフィールドを持つ MediaFile というテーブルがあります。問題なくこのテーブルにファイルの内容を保存する Web アプリケーションを持っており、問題なく doc、xls などの全文検索を使用できます - 動作しない唯一のファイル拡張子は PDF です。このテーブルで全文検索を実行して、テーブルに保存された PDF ファイル内に存在することがわかっている単語を検索すると、これらのファイルは検索結果に返されません。

OSはWindows Server 2003 SP2で、Adobe iFilter 6.0をインストールしています。このブログエントリの指示に従って、次のコマンドを実行しました。

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

この後、SQL Server を再起動し、次のコマンドを実行して、PDF 拡張機能の iFilter が正しくインストールされていることを確認しました。

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

次に、MediaFile テーブルにインデックスを (再) 作成し、インデックスを作成する列として FileContent を選択し、そのタイプとして FileExtension を選択しました。ウィザードはインデックスを作成し、正常に完了します。テストするために、次のような検索を実行しています。

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

これにより、この用語を含む DOC ファイルが返されますが、PDF ファイルは返されませんが、テーブルにはhouseという単語を含む PDF ファイルが確実に存在することがわかっています。

ちなみに、上記の検索で正しいPDFファイルが返された数分間、これが機能するようになりましたが、明らかな理由もなく再び機能しなくなりました.

Adobe iFilter がインストールされ、読み込まれているように見えますが、SQL Server 2005 が PDF のインデックス作成を停止している原因について何か考えはありますか?

4

2 に答える 2

7

ありがとうイヴァン。すべてをゼロから始めることで、最終的にこれを機能させることができました。物事が行われる順序が大きな違いを生むようです。リンクされたブログで iFilter をロードした後に 'load_os_resources' 設定をオフにするというアドバイスは、おそらく最良のオプションではありません。 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. 完全な再インデックスを行う

これで問題は解決しましたが、最終的に適切に機能するようになるまでに、これらの手順を数回実行したことは間違いありません。

于 2008-11-12T22:20:17.987 に答える
0

1時間ほど格闘しましたが、やっと動きました。私はあなたがしたことをすべてやったので、クエリを単純化してみてください(*フィールド名に置き換え、用語の二重引用符を削除しました):

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

また、全文索引を作成するときは、必ず言語を指定してください。Image最後に、フィールド タイプを からに変更してみてくださいvarbinary(MAX)

于 2008-11-11T22:20:29.860 に答える