sql >> データベース >  >> RDS >> Sqlserver

類似の文字列を含むSQLレコードを検索する

    質問で定式化した正確な方法で類似性を本当に定義したい場合は、あなたが言うように、Levensthein距離計算を実装する必要があります。 DataReaderによって取得された各行で計算されたコードまたはSQLServer関数として。

    述べられている問題は、相互に共有されているを知ることができないため、実際には一見したところよりも注意が必要です。 2つの文字列の間の要素は。

    したがって、Levensthein Distanceに加えて、実際に一致する必要のある連続する文字の最小数も指定する必要があります(十分な類似性を確立するため)。

    要約すると、それは過度に複雑で時間のかかる/遅いアプローチのように聞こえます。

    興味深いことに、SQL Server 2008には、可能性のあるDIFFERENCE関数があります。 このようなことに使用されます。

    2つの文字列の音声値を評価し、差を計算します。スペースや数字をうまく処理できず、文字列の先頭を強調しすぎるため、映画のタイトルなどの複数の単語の表現で適切に機能するかどうかはわかりませんが、それでも興味深いです知っておくべき述語。

    あなたが実際に 説明しようとするのはある種の検索機能であるため、SQL Server 2008の全文検索機能を調べる必要があります。これは、組み込みのシソーラスサポート、高度なSQL述語、および「ベストマッチ」のランク付けメカニズムを提供します。

    編集:重複を排除したい場合は、SSISファジールックアップとファジーグループ変換を調べることができます。私はこれを自分で試したことはありませんが、有望なリードのようです。

    EDIT2:SSISを掘り下げたくなくても、Levensthein Distanceアルゴリズムのパフォーマンスに苦労している場合は、それほど複雑ではないように見えるこのアルゴリズムを試すことができます。



    1. ホテルの部屋予約システムのデータモデルの設計

    2. CURRENT_TIMEの例– MySQL

    3. SQLServerでの監査トリガーの作成

    4. SQLclを使用するときにクエリからINSERTステートメントを生成する方法(Oracle)