MySQL布尔全文搜索无法按预期工作

时间:2017-07-13 10:03:38

标签: mysql

我有一张化学物质表,名为substances。我正在尝试使用MySQL的full text natural language功能阻止搜索工具。

我已运行以下命令以允许此类命令在substances列的name表上运行:

ALTER TABLE substances ADD FULLTEXT(`name`);

如果我运行以下命令,它会给我任何包含“Chromium”或“Trioxide”字样的结果:

SELECT * FROM substances WHERE MATCH (`name`) AGAINST ('Chromium Trioxide' IN NATURAL LANGUAGE MODE);

然而,我想要做的只是找到包含“三氧化二铬”的行,即使它们之间有字符(例如“三氧化铬(VI)”)。我的理解是在每个单词之前使用+会这样做:

SELECT * FROM substances WHERE MATCH (`name`) AGAINST ('+Chromium +Trioxide' IN NATURAL LANGUAGE MODE);

但是它给了我与原始查询相同的结果 - 即任何包含“Chromium”或“Trioxide”但不包含两者的东西。

我哪里错了?我已经阅读了布尔全文搜索(https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html),但我发现的唯一信息是在每个关键字前添加+

MySQL版本为5.7.9,表格为MyISAM。

1 个答案:

答案 0 :(得分:0)

我不知道如何使用mysql布尔全文搜索或自然全文搜索来解决它,

但我认为可以使用REGEX(参见https://dev.mysql.com/doc/refman/5.7/en/regexp.html

来完成
SELECT * FROM substances WHERE `name` REGEXP 'Chromium .* Trioxide'