全文搜索,不包括特定标准

时间:2016-05-28 12:30:38

标签: mysql sql

我有这个名为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);

1 个答案:

答案 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%';