2

次のようなデータベースがあるとしましょう ( MyISAM):

+------------+-------------------+------------------+
| student_id | student_firstname | student_lastname |
+------------+-------------------+------------------+
|         30 | Patrik            | Andersson        |
|         79 | Patrik            | Svensson         |
+------------+-------------------+------------------+

そして、次のクエリを実行します。

SELECT s.student_firstname, s.student_lastname FROM students s
WHERE MATCH (student_firstname, student_lastname) 
 AGAINST 
('+Patrik Svensson*' IN BOOLEAN mode)

これにより、上記の両方の行が生成されます。結果に 1 行が表示されないのはなぜですか? の最後の3文字student_lastnameが同じだからでしょうか?FULLTEXTより正確にする方法はありますか?

4

2 に答える 2

3

MySQLのドキュメントを読んでみましたか?

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

そして私は引用します:

デフォルト(+も-も指定されていない場合)では、単語はオプションですが、それを含む行の評価は高くなります。

と:

'+アップルマッキントッシュ'

「apple」という単語を含む行を検索しますが、「macintosh」も含まれている場合は行を上位にランク付けします。

于 2012-07-19T12:46:33.527 に答える
2

私はそれをテストしました、このクエリは正しい結果を与えています

SELECT s.student_firstname, s.student_lastname FROM students s
WHERE MATCH (student_firstname, student_lastname) 
 AGAINST 
('+Patrik +Svensson*' IN BOOLEAN mode)
于 2012-07-19T12:54:30.127 に答える