我有这个名为items的表,我在名称列上启用了全文搜索
id name price
---- ------ -------
1 brown wood 550
2 black wood 430
3 wooden chair 15
4 kitchen knife 3
5 sponge ball 1.35
我想编写一个查询,以使用全文搜索
选择名称不包含'wood'的所有项目所以结果将是
id name price
---- ------ -------
4 kitchen knife 3
5 sponge ball 1.35
这是我的查询
SELECT * FROM items WHERE Match(name) Against('-wood' IN BOOLEAN MODE);
答案 0 :(得分:0)
如果您不想wood
,那么查询的第一步就是:
SELECT *
FROM items
WHERE Match(name) Against('-wood*' IN BOOLEAN MODE);
但是,-
仅在其他字词匹配后才能正常运行。所以,你需要某种积极的匹配。类似的东西:
SELECT *
FROM items
WHERE Match(name) Against('k* and -wood*' IN BOOLEAN MODE);
如果你知道这种排除很常见,你可以在每个名字中加入一个特定的单词(例如," name")。或者,您可能需要诉诸like
:
select *
from items i
where concat(' ', name' not like '% wood%';