mysql FULLTEXT搜索多个单词

时间:2011-07-16 12:20:13

标签: php mysql search

我从来没有真正听过这个问题的直接答案,我只需要FULLTEXT搜索几个列,其中包含多个单词“Firstname Lastname”

$sql = mysql_query("SELECT * FROM 
                    patient_db 
                    WHERE MATCH ( Name, id_number )
                    AGAINST ('% $term %' IN BOOLEAN MODE);");

但如果我在这里输入多个单词,则无法运行查询。

2 个答案:

答案 0 :(得分:19)

$sql = mysql_query("SELECT * FROM 
         patient_db WHERE 
         MATCH ( Name, id_number ) 
         AGAINST ('+first_word +second_word +third_word' IN BOOLEAN MODE);");

如果您想进行精确搜索:

$sql = mysql_query("SELECT * 
                  FROM patient_db 
                  WHERE MATCH ( Name, id_number ) 
                  AGAINST ('"exact phrase"' IN BOOLEAN MODE);");

答案 1 :(得分:4)

SELECT * 
FROM patient_db 
WHERE MATCH ( Name, id_number ) 
      AGAINST ("Firstname Lastname" IN BOOLEAN MODE);

双引号很重要。这就是字面上的“名字姓氏”。 你不需要百分号。

如果你寻找“名字blahblahblah Lastname blahblah”,AGAINST()条款必须如下:

AGAINST ('+Firstname +Lastname' IN BOOLEAN MODE);

请查看MySQL docs on full text search以获取更多信息。

另一件事:为什么你的匹配中有id_number列?