2

Delphi/Sql Server で記述されたクライアント サーバー DMS を維持しています。

ユーザーがデータベースに保存されているすべてのドキュメント内の文字列を検索できるようにしたいと思います。(ファイルは blob として保存され、スペースを節約するために zip ファイルとして保存されます)。

私の考えは、「チェックイン」でそれらをインデックス化することです。そのため、nwe ファイルを保存すると、その中のすべてのテキスト情報が抽出され、新しい DB フィールドに配置されます。したがって、どういうわけか私のファイルテーブルは次のようになります。

ID_FILE integer
ZIPPED_FILE blob
TEXT_CONTENT text field (nvarchar in sql server)

pdf、txt、rtf、doc、docx、pdfなど、少なくとも最も一般的なテキストのようなファイルの「インデックス作成」をサポートしたいと思います.xlsおよびxlsx、ppt、pptxを追加する場合があります。

MS Office ファイルの場合、アプリケーションで既に ActiveX を使用しているため、txt ファイルの場合は単にファイルを読み取ることができますが、pdf と odt の場合は ActiveX を使用できますか?

すべてのファイルタイプを「恐れずに」解析する最高のテクニック、またはサードパーティのコンポーネント(無料でもありません)を提案できますか?

ありがとう

4

2 に答える 2

3

この方法でドキュメントを検索すると、非常に遅くなり、使用するのが不便になるため、TEXT_CONTENT フィールドの代わりに 2 つの追加テーブルを作成することをお勧めします。

テキストを解析するときは、価値のある単語を抽出し、それらを標準化して、小文字/大文字の問題を取り除き、同じ意味で使用される可能性のある文字を取り除く必要があります。
つまり、トルコ語では c として入力できる ç 文字があります。- 扱っている言語で一般的な動詞を取り除きます。つまり、「私が探しているもの」、「もの」、「探しているもの」はあなたの興味に合うかもしれません - どんな問題が直面してもそれを取り除きます。

テーブルに既にエントリがある各単語は、string_search テーブルで既に指定されている ID を再利用する必要があります。

レコードは次のようになります。 original_file_table zip_id 番号 zip_file blob

string_search str_id number standardized_word テキスト (または適切なセカンダリ インデックスを持つ任意の文字列型)

file_string_reference zip_id 番号 str_id 番号

私が考えていることをあなたに伝えることができれば幸いです。

于 2013-06-28T14:36:16.333 に答える