1

問題の追跡に使用されるテーブル (stackoverflow のようなもの:) PC 関連の問題を記録するためのテーブルを用意しました。簡単にするために、次のようないくつかのフィールドに絞り込みます。

Site               Category          Issue
MI Office          Software          My MS word does not run macros.
CL Office          Hardware          PC memory needs to be upgraded
MX Office          Printer           Printer is out of memory.
MI Office          Software          Office product prompts for allowing macro to run

たとえば、ある問題を見ているときに、関連する問題を見つけたいと考えています。LIKEたとえば、次の場合、演算子を実際に使用することはできません。

SELECT...FROM...WHERE Issue LIKE '%My MS word does not run macros.%'

最初のレコードのみを返します。「マクロ」のようなキーワードを引き出す方法を理解する必要がありますか? たとえば、クエリがレコード 1 と 4 を返すように、関連するレコードを見つけるにはどうすればよいでしょうか。または、2 と 3 を一緒に返すのでしょうか?

4

1 に答える 1

1

さて、ここに3つの方法があります..

1. 最良 のケース: ユーザーに各課題に「タグ」を追加してもらいます。このようにして、ユーザーはタグを使用して課題を検索し、関連する課題も見つけることができます。(http://stackoverflow.comのように;))

これは、2 つの新しいテーブルを作成して実装できます。

  • tag_metadata (タグ番号、名前、説明など)
  • tag_issue_relationship(タグ番号, 発行番号)

さらに一歩進んで、各課題エントリに重みを追加し、類似課題の検索/ルックアップ ランキングでの位置を決定することができます。

2. 平均的なケース: 問題をさらに分類するのに役立つように、サブカテゴリにさらに多くのレベルがあります。変更管理について考えてみると、システムは時間の経過とともにカテゴリ階層を簡単に追加/削除/再配置できるようになりますか..?

3. 最悪のケース: ユーザーが非常に怠け者で、問題のタグ付けに数秒を費やしたくない場合:).. その場合、問題の説明のキーワード (名詞) を取得するインデックス作成アルゴリズムを実装する必要があります。 「類似」の問題を見つけやすくするためのインデックスを作成します。多くの場合、説明には意味のないキーワードが含まれている可能性があり、誤検知につながる可能性があります。


[アップデート]

基本的に、探しているソリューションは次のモジュールに分割できます。

  1. パーサー: 問題の説明から重要なキーワードを抽出します。キーワードのカスタム ディクショナリ リストがルックアップ テーブルとして使用されます。
  2. インデクサー: これらのキーワードをインデックス化して検索可能にします。これには、フォワード インデックスとリバース インデックスの維持が含まれます。
  3. 検索: 索引を使用して「類似」の問題を見つけます。

これを行う既存の商用/オープンソース製品があるかもしれません..

于 2012-10-04T11:41:55.057 に答える