2 つの文字列に一致し、その 2 つの文字列が何パーセント一致するかをパーセンテージで返す優れたアルゴリズムを知っていますか?
また、データベースでも機能するものはありますか?
レーベンシュタイン距離はそのような尺度です。基本的に、最初の文字列から 2 番目の文字列に移動するために、編集、削除、または追加する必要がある文字数を示します。一部のデータベース システムがそれをサポートしているかどうかはわかりません。
しかし、一部のデータベース システムでは、Soundexという名前のはるかに単純化されたアルゴリズムがサポートされていることは確かです。
類似性の基準によって異なります。他の人はすでにレーベンスタイン距離を紹介しています (編集距離も同じです)。通常、これは非常に優れており、soundex などよりも言語に依存しないことは間違いありません。ただし、レーベンシュタイン差は転置をうまく処理できないことに注意してください。したがって:
Levenstein("copy", "cpoy") == 2
人間の入力を処理しようとしている場合、転置はかなり一般的です。それが問題かどうかは、類似性の指標によって異なります。
しばらく経ちましたが、Postgresql にはlevenstein()
組み込みか、contrib
C モジュールとして利用できると思います。
あなたが探している問題はEdit Distanceと呼ばれるものだと思います。一般に計算にはコストがかかりますが、他の文字列の編集距離が短い文字列を探している場合は、それほど悪くはありません。ウィキペディアの記事に詳しい情報があります。
2 つの文字列を最もよく一致させるには? 彼らにコーヒーを飲みに出かけてもらい、彼らが意気投合した場合は、夕食と映画を楽しみます。それとも、ピアプログラミングを行うことができますか? それは本当に弦に依存します。コーヒーでさえ難しい場合があります。
これは役に立ちますか?私はちょうどそれに遭遇しました。数値デルタを生成する 2 つの文字列の比較