MySQLの自然言語全文検索は、最も関連性の高い検索結果を見つけるために、検索クエリをコーパスと照合することを目的としています。だから、「私はパイが大好き」という記事があり、d1、d2、d3というドキュメントがあるとします。文献1と2はそれぞれスポーツと宗教に関するものであり、文献3は食料に関するものである。記事からあなたのクエリ、
SELECT * WHERE( 自然言語MODE IN 'とデータベース')との試合(タイトル、本文)。
d3が記事と最もよく一致するため、d3、d2、d1(記事の並び順に応じてd2、d1のランダムな順序)を返します。
MYSQLが使用する基礎となるアルゴリズムはおそらくtf-idfアルゴリズムです。ここで、tfは単語の頻度を表し、idfは文書の頻度の逆数です。 tfは、文書内の単語wが文書内で出現する回数だけです。 idfは、その単語がどれだけ多くの文書に存在するかに基づいています。だから、多くの文書に出現する言葉は、最も代表的な文書の決定には寄与しません。 tf * idfの積は得点が高くなりますが、単語が文書をよりよく表します。だから、「パイ」は文書d3にしか現れず、したがって高いtfと高いidfを持ちます(逆数なので)。 'the'は高いtfを持ちますが、低いidfを持ち、tfから出て低得点になります。
MYSQL自然言語モードには、ストップワード(、など)も含まれており、4文字未満の単語を削除します。あなたが提供したリンクに表示されます。
いくつかの単語は、フルテキスト検索では無視されています
Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters for
のInnoDB検索インデックス、またはMyISAMのための4つの文字が。 のカットオフを制御するには、 インデックスを作成する前に設定オプションを設定します。InnoDB検索 インデックスの場合はinnodb_ft_min_token_size設定オプション、MyISAMの場合はft_min_word_lenです。
Words in the stopword list are ignored. A stopword is a word such as “the” or “some” that is so common that it is considered to have
ゼロセマンティック値。ビルトインのストップワードリストがありますが、ユーザ定義のリストによってオーバーライドされた になる可能性があります。ストップワードリストと関連する 設定オプションは、InnoDB検索インデックスと MyISAMインデックスでは異なります。ストップワード処理は、InnoDB検索インデックスの場合は の設定innodb_ft_enable_stopword、innodb_ft_server_stopword_table、 およびinnodb_ft_user_stopword_table、MyISAMの場合は ft_stopword_fileという設定によって制御されます。