允许使用多个关键字在多列中进行搜索

时间:2015-12-18 14:48:18

标签: php mysql search pdo

以下是我的方案:我有一个搜索多个列的搜索

$sql = "SELECT * FROM $this->_table WHERE r_title LIKE ?
   OR r_level LIKE ?
   OR r_section LIKE ?
   OR r_excerpt LIKE ?
   ORDER BY r_id DESC"

这样做很有效,但例如标题可以是"Squash",该部分可以是"Soup",因此如果用户输入"squash soup",则不会返回任何结果。< / p>

这有意义吗?我怎样才能让它提供更相关的合并响应?

该部分在技术上被称为"Soups"not "Soup",我仍然希望它返回&#34;南瓜汤&#34;如果该部分真的是soups,,则忽略"s"

1 个答案:

答案 0 :(得分:3)

您需要使用MySQL's search functionality。像这样:

SELECT * FROM table
WHERE MATCH(r_title, r_level, r_section, r_excerpt)
    AGAINST (? IN BOOLEAN MODE)
ORDER BY r_id DESC
默认情况下,

Boolean search会查找搜索词组中的任何字词,因此不需要进行预处理。您需要确保您的表格上有appropriate indices

ALTER TABLE table
    ADD FULLTEXT INDEX (r_title),
    ADD FULLTEXT INDEX (r_level),
    ADD FULLTEXT INDEX (r_section),
    ADD FULLTEXT INDEX (r_excerpt);