web-dev-qa-db-ja.com

mysql MATCH関連性スコア

これはグーグルにとって簡単な質問だと思いました。でも見つからなかった。

次のクエリがあるとします。

SELECT name, MATCH (name) AGAINST ('vision black*' IN BOOLEAN MODE) as rel 
FROM (`phppos_items`) 
WHERE MATCH (name) AGAINST ('vision black*' IN BOOLEAN MODE) AND `deleted` = 0
ORDER BY `rel` DESC LIMIT 100

一致スコアが高いほど関連性がありますか?誰かがこれを説明する正しいmysqlのマニュアルページを私に示すことができますか?

単純な観察に基づくと、スコアが高いほど良いようです。

1
Chris Muench

Natural Language Full-Text Searches の下のMySQLドキュメント

段落1

デフォルトまたはIN NATURAL LANGUAGE MODE修飾子を使用すると、 MATCH() 関数は、テキストコレクションに対して文字列の自然言語検索を実行します。コレクションは、FULLTEXTインデックスに含まれる1つ以上の列のセットです。検索文字列は、引数として AGAINST() に指定されます。 *テーブルの各行について、 ** MATCH()は関連性の値を返します。つまり、 MATCH() list ***で指定された列の、その行の検索文字列とテキストの間の類似性の測定。

パラグラフ3

前述の例のように、WHERE句で MATCH() を使用すると、返される行は最初に関連性の高い順に自動的にソートされます。関連性の値は、負でない浮動小数点数です。ゼロ関連性は類似性がないことを意味します。 関連性は、行内の単語数、その行内の一意の単語数、コレクション内の単語の総数、およびドキュメントの数(特定のWordを含む行)。

ブール検索を行う場合、 MATCH() は0または1を返します。

MyISAMユーザーへの注意

MyISAMテーブルに対して myisam_ftdump ユーティリティを使用して、単語とその頻度の完全なリストを取得できます。

InnoDBユーザーへの注意

MySQL Documentation(Boolean Full-Text Searches) のサブヘッダーRelevancy Rankings for InnoDB Boolean Mode Searchの下にあるInnoDBがブールフルテキスト検索の関連性を計算する方法についての素晴らしい説明があります。

3
RolandoMySQLDBA