你好我有一个关于mysql搜索的问题 我有一个有很多产品的在线产品商店,所有记录都有 keyword 字段来存储用于搜索目的的关键字。数据是这样的
A product_id=1 => keywords=laser wedding cake box
B product_id=2 => keywords=red box
C product_id=3 => keywords=laser card box
D product_id=4 => keywords=wedding cake box etc....
如果我搜索
"laser wedding cake box"
我的要求是,结果应该如下
首先它应该返回包含的所有记录
所有的结果都应该按照给定的顺序附加到查询中
我在用
FULLTEXT with BOOLEAN MODE
。它适用于四个单词,但我无法附加其余部分。
你们能给我一些关于这个要求的信息吗 提前致谢
您应该为每个关键字单独一行,而不是同一行中的所有关键字。
CREATE TABLE product_keywords (
product_id INT,
keyword VARCHAR(100),
UNIQUE KEY (product_id, keyword),
CONSTRAINT FOREIGN KEY (product_id) REFERENCES products (product_id)
);
INSERT INTO product_keywords (product_id, keyword) VALUES
(1, 'laser'), (1, 'wedding'), (1, 'cake'), (1, 'box'),
(2, 'red'), (2, 'box'),
(3, 'laser'), (3, 'card'), (3, 'box'),
(4, 'wedding', (4, 'cake'), (4, 'box');
然后你可以使用这样的查询:
SELECT p.name, p.product_id, COUNT(*) AS num_matches
FROM products AS p
JOIN product_keywords AS k ON p.product_id = k.product_id
WHERE k.keyword IN ('laser', 'wedding', 'cake', 'box')
ORDER BY num_matches DESC;