MYSQL - 在多列中搜索单词

时间:2013-10-27 20:21:11

标签: php mysql search

我想为我的网站制作一个搜索工具。

如果我搜索我希望它搜索多个列的短语

例如,如果我搜索脱盐钻,并且标题上有我想要它的工程脱盐电钻。

如果我搜索脱盐钻并且瓷砖有脱盐剂并且描述有钻,我希望它出现。

但搜索的所有单词都必须包含在任何字段组合中。

有人可以帮我查询吗?

目前:

{Select * from products where sku like '%{$searchwords}%' or title like '%{$searchwords}%' or desc like '%{$searchwords}%}

2 个答案:

答案 0 :(得分:1)

你可能想要FULLTEXT搜索(从MySQL 5.6开始,这也适用于InnoDB表)。您可以要求所有单词BOOLEAN MODE

答案 1 :(得分:1)

如果您的表是myisam,您可以创建一个fulltext索引,然后在布尔模式下使用

添加密钥:

alter table products ADD FULLTEXT (sku, title, desc)

然后你的查询将是:

 $searchwords = join(' +', explode(' ', $searchwords));

 $query = "SELECT * FROM products WHERE MATCH (sku, title, desc) AGAINST ('{$searchwords}' IN BOOLEAN MODE)";