0

私は、クライアントが履歴書のフロントエンドからキーワードを送信し、containstable を使用してそのキーワードのテーブルの列を検索し、結果をフロントエンドに返すアプリケーションで作業しています。

私のアプリケーションでは、最初に履歴書の詳細をテキスト形式で保存し、その後、html 形式で追加し始めました。現在、検索機能は古い履歴書テキストに対しては正常に機能していますが、Html の場合は期待される結果が得られません。そのため、テキストまたは HTML の両方で含まれる検索機能が機能するようにするにはどうすればよいでしょうか。

4

2 に答える 2

1

おいおい。あなたは全文索引付けの暗い世界に入りました...ここからの登りは大変なので、私の友人に詰め込んでください。=)

いくつかの細かい詳細を省いたので、先に進む前に、次の 2 つのことを想定しています。

  1. 履歴書テキストを含む列は varchar(max) または nvarchar(max) です

  2. 上記の列を含むテーブルに全文索引を作成しました

さて、本題に入ります。最初に言っておきますが、私は決して SQL Server のフルテキスト インデックスの専門家ではありません (本当に誰かいますか?)...私が学んだことは、苦痛な試行錯誤によって得られたものなので、これをそのまま受け入れてください。そうは言っても、あなたの状況は、私が今年初めに直面した状況と非常に似ているように聞こえます。type (これは varchar(max) に移行しました) であり、この列には「プレーン」テキストと html でラップされたテキストの両方が含まれていました。私たちが直面した課題は、エンド ユーザーがフロント エンド アプリケーションを介してこのフルテキスト インデックスに対して検索を実行したときに、プレーン テキストと html の両方でクエリがヒットすることでした。したがって、たとえば、ユーザーが「ローマン」を検索した場合、プレーン テキスト コンテンツと「Times New Roman」を参照する html タグの両方からヒットが返される可能性があります。これは望ましい動作ではありません。

悪いニュースは、私が見つけた直接的な解決策がないことです。私が認識している唯一の可能な SQL Server 側の解決策は、列のデータ型を varbinary(max) に変換し、varbinary(max) 列を型 'HTML' として指定する 'companion' 列を作成してから、 HTML 用の Microsoft iFILTER... 詳細については、こちらこちら参照してください

最終的に、次の理由により、これは私たちの進むべき道ではないと判断しました。

  1. iFILTER/フルテキスト インデックス作成機能の実装が 100% 成功したとしても、それが必要に応じて実行されるとは確信していませんでした。
  2. 列を varbinary(max) に変換すると、それ自体がパフォーマンスに影響を与えました。これは、すべての読み取りと書き込みを varbinary データ型との間でオンザフライで変換する必要があるためです...アプリケーション コードとオプティマイザに複雑なレイヤーが導入されます私たちが熱心ではなかったこと。

結果をクリーンアップするのに役立ち、この特定のプロジェクトのニーズを十分に満たすアプリケーション側のロジックを実装することになりました。

あなたが試みていることを達成しようとすることを完全に思いとどまらせたくはありませんが、少なくとも目を開けて、課題を認識して取り組んでほしいと思います...うまくいけば、それがあなたの欲求不満と無駄な時間を節約するでしょう. !

コミュニティに感謝し、成功や学んだ教訓を投稿してください。これに関する十分な情報はありませんが、他の人にとって大きな助けになるでしょう.

頑張ってください!

于 2015-04-30T13:31:04.240 に答える
0

ドキュメントmsdnを見ると、varbinary(max) または画像の場合、varbinary(max) 列のファイル タイプを含むセカンダリ列を指定できることがわかります。

column_name [ TYPE COLUMN type_column_name ]

インデックス作成時に、Full-Text Engine は各テーブル行のタイプ列の省略形を使用して、column_name のドキュメントに使用する全文検索フィルターを識別します。フィルターはドキュメントをバイナリ ストリームとして読み込み、書式設定情報を削除して、ドキュメントのテキストをワード ブレーカー コンポーネントに送信します。詳細については、「検索用のフィルターを構成および管理する」を参照してください。

于 2015-04-30T12:45:36.257 に答える