0

私はこの文を持っています:

I want to say hi for everybody here.

テーブル内の特定の列に、一致する単語の数に応じて類似した文が含まれているかどうかを確認したいと思います。

テーブルの行

  1. みなさん、こんにちは。
  2. ここでこんにちはと言う
  3. みんなのためにここでこんにちはと言ってください

一致する単語が最も多く含まれているため、3番目の行を取得する必要があります。

親切なフィードバックに感謝します。とても緊急です。

4

2 に答える 2

3

列に全文索引を設定し、CONTAINS FREETEXTTABLE関数を使用する必要があります。

于 2012-12-17T09:57:21.853 に答える
0

コードを使用した完全な回答を投稿するには少し時間がかかりますが、人の名前を扱う同様の問題に対して私が使用した解決策は、完全な文を含むテーブルに加えて Word のテーブルを作成することです。交差テーブルを作成して、文と単語の間で多対多のマッピングを作成します。文を追加すると、それも単語に分割され、Words テーブルと intersect テーブルも更新されます。

検索する文が与えられたら、word in ("I", "want", "to"...などの where 句を使用してクエリを作成し、それを交差テーブルに結合し、交差テーブルにある文テーブル ID でグループ化できます。グループ化を使用すると、1 つ以上の一致する単語を持つ各 Sentence 行に一致する単語の数を返すことができます。その数で並べ替えると、最も一致する文が得られます。

このアプローチでは順序は考慮されず、スペルは正確でなければなりません。"All for one and one for all"また、単語が繰り返される場所など、文をどのように扱うかを検討する必要があります。

于 2012-12-17T14:16:54.420 に答える