2017-07-13 38 views
0

我有一個化學物質表,名爲substances。我試圖通過利用MySQL的full text natural language功能來推動搜索工具。MySQL布爾全文搜索不能按預期工作

我已經運行下面允許這樣的命令,我substances工作表中的name列:

ALTER TABLE substances ADD FULLTEXT(`name`); 

如果我運行下面的命令,它給了我這包含詞「鉻」的任何結果或「三氧化二砷」預期:

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); 

但它給了我同樣的結果與原始查詢 - 包含無論是「鉻」或「三氧化二砷」,而不是兩個,即任何東西。

我哪裏錯了?我已經閱讀了布爾全文搜索(https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html),但我發現的唯一信息是在每個關鍵字之前包含+

MySQL版本是5.7.9,表格是MyISAM。

+0

雖然你基本上閱讀正確,要使用布爾模式(支持'+'等修飾符),你必須編寫'IN BOOLEAN MODE'而不是'IN NATURAL LANGUAGE MODE'。 – Solarflare

回答