MySQL Fulltext搜索给我带来了不准确的结果

时间:2012-07-19 12:40:20

标签: mysql full-text-search rows

假设我有一个看起来像这样的数据库(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更精确?

2 个答案:

答案 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)