1

私の質問に対する答えはどこにも見つかりませんでした。私は調査を行いましたが、運がありません。

次のステートメントをクエリするとします。

SELECT `id`, MATCH(`name`,`content`) AGAINST ('some keywords') AS `score` FROM `pages` WHERE MATCH(`name`,`content`) AGAINST ('some keywords')

MySQL はテーブル全体に基づいてスコアをpages表示しますか?そこにある他のすべてのレコードをスキャンしますか? nameそれとも、私たちの場合、提供された列 ( and ) を持つ行を考慮するだけでスコアが得られるでしょうかcontent

4

1 に答える 1

3

はい、他の行でもキーワードの頻度を使用します。MySQL Fulltext Searchから取得した式は次のとおりです。

w = (log(dtf)+1)/sumdtf * U/(1+0.0115*U) * log((N-nf)/nf)

どこ:

dtf は、用語が文書に出現する回数です。 sumdtf は、同じ文書内のすべての用語の (log(dtf)+1) の合計です。 U
は、文書内の固有の用語の数です。 N は、 documents nf は、用語を含むドキュメントの数です。

于 2012-12-16T16:32:53.697 に答える