假设我有一个看起来像这样的数据库(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)
这会生成上述两行。为什么我的结果中没有一行?是因为student_lastname
中的最后三个字母是相同的吗?有没有办法让FULLTEXT
更精确?
答案 0 :(得分:3)
您是否尝试过阅读MySQL文档?
http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
我引用:
默认情况下(当既未指定+也未指定时),该单词是可选的, 但是包含它的行被评为更高。
和
' + apple macintosh'
查找包含单词“apple”的行,但如果它们排名更高 还包含“macintosh”。
答案 1 :(得分:2)
我测试了它,这个查询给出了正确的结果
SELECT s.student_firstname, s.student_lastname FROM students s
WHERE MATCH (student_firstname, student_lastname)
AGAINST
('+Patrik +Svensson*' IN BOOLEAN mode)