2011-10-12 19 views
5

MySQLデータベースに格納されたテキストの数に対してフォーム経由で提出されたテキスト間の類似率をチェックするためのMySQLコードが必要です。2つのテキスト間の類似率をチェックするMySQL関数

私はPHPのsimilar_text()のように機能するMySQLストアドプロシージャを探しています。すでにMySQL Levenshteinの距離手順がありますが、それだけでは十分ではありません。

ユーザがテキストを送信すると、アルゴリズムは、提出されたテキストと所定のパーセンテージの類似性を有するデータベース内のエントリを返すべきである(データベース内の1つのカラムのみを比較する)ユーザーが提出したテキストで

例えばテーブル

TABLE - Articles 
id, article_body, article_title 

コードは、テキスト(article_body)提出したユーザとの類似率> 40%(または他の所定の値)を持つすべての行を返すべきです。

私は、アルゴリズムは次のようにすべきだと思います

答えて

0

..

  • 最初(LENGTHを使用して)与えられた単語の長さを計算します。
  • そして今、一致した各単語の長さを計算し、例えばのために、簡単な数学

を使用

  • INSTRまたは任意の特定の機能を使用して)特定の列にその単語を検索:私は検索したい "地獄のHello World 'と' ヘルボーイ ' '以上50%を照合して、私のDBに2つの一致する単語がある'

    長(地獄)ヘルボーイ4
    長さ(ハローワールド)= 11
    長(ヘルボーイ)は世界ハロー7

    (11-4)/ 11 = = = 63.63パーセント
    (7- 4)/ 7 = 42.85%

    Hello Worldは、上記の計算に基づいて再検索される。

    希望します。

  • 1

    私はアプリケーションでやっています。

    SELECT SOUNDEX('Hello'), SOUNDEX('Hello world'), SOUNDEX('hellboy'); 
    +------------------+------------------------+--------------------+ 
    | SOUNDEX('Hello') | SOUNDEX('Hello world') | SOUNDEX('hellboy') | 
    +------------------+------------------------+--------------------+ 
    | H400    | H4643     | H410    | 
    +------------------+------------------------+--------------------+ 
    
    +0

    をしかし、あなたは、あなたがSOUNDEXから結果として得るこれらの文字列を比較する必要がpercentual違いを取得するには...と、円は継続 - たぶん、SOUNDEX関数の結果

    がお手伝いします。 – Matmarbon

    関連する問題