web-dev-qa-db-ja.com

SQL Serverフルテキストでインデックス付けされたドキュメントのフルテキストを返すにはどうすればよいですか?

SQL Server 2014とFileTableを使用して、さまざまな形式で多数のドキュメントを保存しています。 iFilterはうまく機能しており、すべてがFTS +セマンティック検索でインデックス化されています。次に、これらのドキュメントのテキストに対して追加の処理を実行したいのですが、ファイルからテキストのデコード、抽出などの作業をパイプラインでやり直す理由がわかりません。

明らかな解決策があるはずです...しかし、私は運がなくて円で走っていました。

だから問題は:

  • T-SQLでファイルの完全なプレーンテキストを返すようにクエリするにはどうすればよいですか?

  • それが不可能な場合、通常のFTSパーサーの実行後にSSISまたはSSASで実行できますか?

  • それが不可能な場合、(おそらくトリガーを介して)FTSパイプラインにフックして、プレーンテキストを別のテーブルに分割できる方法はありますか?

私が参照できる良い例があれば、代替の解決策もありがたいです。私が持っていた唯一の直接的なアイデアは、ドロップオフに別のネットワーク共有を使用し、SSISにファイルを取得してテキストを抽出し(方法はわからない)、次にファイル+テキストをSQLサーバーに移動することでした...それは多くの理由で不安定に見えます。

[「なぜ」を明確にするために編集]

SQL ServerがテキストをチャンクしてセマンティックインデックスのベースNLPを実行するために既にテキストを引き出している場合...ホイールを再発明するのではなく、それを使用します。私が調査している特定の用途は、他のNLPユーティリティ(NLTK、GenSim、スタンフォードNLP NERなど)を使用した後処理であり、抽出ドキュメントの要約を生成し、コーパスのn-gram統計を格納し、より効果的なファセット検索。

SQL Serverに保存する前にファイルからテキストを抽出する必要がある場合(SSIS/.NETを使用して、iFilters ORを別のツールで完全に維持できるようにするため)には、次のような制限があります。 SQL ServerのFileTableでの作業を実行する機能は、最も基本的なタスク以外のあらゆるものに対応します。

すでにサポートされているドキュメント形式の数を検討してください。機能を再作成することは主要なタスクです。同様に、後で実際のファイルに戻って、インデックス作成作業が非効率的であることをやり直す必要があるため、FileTableでFTSを無効にするか、それらの使用をすべてスキップするか、またはドキュメントベースのFTSのSQL Serverをすべて廃棄するのが賢明です。

5
iivel

プレーンテキストを取得することで何ができるか興味があります。すでにFileTableにドキュメントがあり、必要に応じて適切なツールを使用してファイルを開くことができます。

例: PDF、Word文書、Excelスプレッドシートなどを表示している場合は、おそらくデータを表示するためのツールがあります。ほとんどのツールでは、「プレーンテキスト」を手動で保存することもできます。しかし、それはあなたが「プレーンテキスト」をどのように定義するかに依存すると思います。 Word文書を非Unicode .TXTファイルに保存しますか?それとももっと複雑なことですか?

もちろん、私はあなたがより自動化されたアプローチを望んでいることを理解しています。

知っておくべきことの1つは、必ずしもすべてのファイルが「プレーンテキスト」にコピーされるわけではないということです。 (少なくとも[〜#〜] i [〜#〜]中国語のプレーンテキストで問題がありました。)

全文索引について:

SQL Serverフルテキストインデックスは、インデックス内の「単語」の相対位置を認識するため、フレーズを検索できますが、インターフェースはありません。テキスト内の単語の連続シーケンスを明らかにする。したがって、(現在のところ)全文索引からプレーンテキストを作成する方法はありません。

これらの詳細が入手できたとしても、フルテキストインデックスには、ドキュメントを完全に表すために必要なものがすべて含まれていません。

  • Stop Words設定すると、フルテキストインデックスに表示されませんになります。
  • 「事前黙示録」、「F.B.I。」など、Word内でトークン化された場合を除き、句読点は通常含まれません。など。
  • フォーマットは失われます。
  • 全文索引に使用されている言語が結果に影響を与える可能性があります。

フルテキストインデックスは、プレーンテキストの作成とは異なる問題を解決しています。ただし、私の経験では、誰かが常に何かを見つけようとしているため、大規模なテキストベースは通常、とにかく全文索引付けの恩恵を受けるということです。

テキストを取得したら、それをSQL Serverテーブルに冗長的に保存して、プレーンテキストデータの使用を促進することを理解しています。

抽出とロードの自動化

これにはいくつかの作業が必要になります。ただし、ドキュメントは現在FileTableにあるため、ファイルツールを使用してファイルシステムからドキュメントにアクセスできるはずです。以下のプレーンテキスト抽出に対する「オフトピック」の回答には、いくつかの他のユーザーが使用しているツールが含まれています。おそらくこれらのツールのいくつかはあなたに役立つでしょう。

http://stackoverflow.com/questions/5671988/how-to-extract-just-plain-text-from-doc-docx-files-unix

SQL Server 2014を使用しているため、プレーンテキストファイルを取得すると、BCPSSISなどのさまざまな方法でそれらをインポートできるようになり、その他のツールを使用してデータを読み込むことができます。

アプローチによっては、データを宛先テーブルに移動する前に、ステージングテーブルを使用して結果をさらに準備することもできます。また、ドキュメントのバージョン管理も行っている場合は、さまざまなバージョンを追跡できるメタデータを作成する必要があるでしょう。

3
RLF