1
1 MySQL
2 PHP and MySQL
3 PHP MySQL Database Search

これらは私のテーブルの 3 つの行です。キーワード 'php mysql database' の検索を適用すると、3 つのキーワードがすべて含まれているため、行 3 から 3-2-1 の順序で結果が表示されます。

このコードを試しましたが、3 つすべての結果しか表示されていませんが、必要な順序ではありません。

SELECT data,
MATCH(data) AGAINST('PHP MySQL Database' IN BOOLEAN MODE) AS score
FROM table
WHERE MATCH(data) AGAINST('PHP MySQL Database' IN BOOLEAN MODE) ORDER BY score DESC;
4

1 に答える 1

2

ブールモード自然言語モードのドキュメントを比較します:

ブール:ブール全文検索には次の特徴があります: 関連性の低い順に行を自動的にソートしません。

自然言語:前に示した例のように、MATCH() が WHERE 句で使用されている場合、返される行は、関連性が最も高い順に自動的に並べ替えられます。

したがって、私の提案は、自然言語モードを使用し、明示的な順序句を単純に除外することです。

デフォルト設定に関する注意

上記のリンク先のドキュメントを引用する:

一部の単語は全文検索で無視されます。

短すぎる単語は無視されます。全文検索で検出される単語の既定の最小長は 4 文字です。

デフォルトの最小単語長とストップワード リストは、セクション12.9.6「MySQL 全文検索の微調整」で説明されているように変更できます。

そして、それがリンクしているページから:

たとえば、3 文字の単語を検索可能にする場合は、オプション ファイルに次の行を追加して ft_min_word_len 変数を設定できます。

[mysqld]
ft_min_word_len=3
于 2012-08-26T19:06:28.793 に答える