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 行?是因为最后三个字母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 回答