2017-05-03 13 views
0

マッチ・アゲインストの背景を理解したいと思います。
0から10までのスコアを返しますが、基準を理解できません。私はちょうどその文字列が含まれていない場合は0.0906190574169159を返す正確な文字列に一致しようとしていることを確認することができたすべてのenlightment?マッチ・アゲインテッド

+0

これを読んでください:https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html – ghenghy

+0

@ghenghyありがとうございますが、私はすでにそれを読んでいます。残念ながら、私はそれを並べ替える手助けしない限り、私はこの質問に答えを見つけることができませんでした – Leggy7

答えて

0

だから私はこれを読んで言ったが、あなたはそれが十分ではないと言う。dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.htミリリットル

関連通路がありますこれは:

"MATCH()がWHERE句で使用されている場合、前述の例のように、最初に関連性の高い順に自動的にソートされます。関連性は、行(文書)内の単語の数、行内のユニークワードの数、コレクション内の単語の総数、および特定の単語を含む行の数に基づいて計算されます。

あなたはそのページ上の例のテーブルおよび挿入を取ると、このクエリを実行する場合:

SELECT MATCH (title,body) 
    AGAINST ('database' IN NATURAL LANGUAGE MODE) FROM articles; 

あなたが得る:ゼロを返す行のために

+--------------------------------------------------------------------------+ 
| MATCH (title,body) 
     AGAINST ('database' IN NATURAL LANGUAGE MODE) | 
+--------------------------------------------------------------------------+ 
|              0.22764469683170319 | 
|                  0 | 
|                  0 | 
|                  0 | 
|              0.22764469683170319 | 
|                  0 | 
+--------------------------------------------------------------------------+ 

を、一致するものがありませんでした、他の人にとっては、その値は、マッチが「良い」と考えていることに基づいたランキングです。この場合、一致は同じなので、値は同じです。代わりにする場合は、走っ:

SELECT MATCH (title,body) AGAINST ('Database comparison' IN NATURAL LANGUAGE MODE) FROM articles; 

をあなたが得る:

+--------------------+ 
| 0.0906190574169159 | 
|     0 | 
|     0 | 
|     0 | 
| 0.6961383819580078 | 
|     0 | 
+--------------------+ 

は値が今異なっています。最初の非ゼロの結果は、今のところ一致するだけでスコアが低くなりますが、もう一方はスコアが高くなり、一致がよくなります。

+0

あなたの答えをありがとう。私が望んだのは、精度の計算方法の説明でした。 1つのフルテキスト列があり、完全に1つの行と一致する文字列を検索すると、その行が最大の精度で一致すると予想されますが、そうではありません。だから私は、コレクション内の実行時の重みと、それが10に制限されている理由を理解したいと思います – Leggy7