我想为我的网站制作一个搜索工具。
如果我搜索我希望它搜索多个列的短语
例如,如果我搜索脱盐钻,并且标题上有我想要它的工程脱盐电钻。
如果我搜索脱盐钻并且瓷砖有脱盐剂并且描述有钻,我希望它出现。
但搜索的所有单词都必须包含在任何字段组合中。
有人可以帮我查询吗?
目前:
{Select * from products where sku like '%{$searchwords}%' or title like '%{$searchwords}%' or desc like '%{$searchwords}%}
答案 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)";