我有一個化學物質表,名爲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。
雖然你基本上閱讀正確,要使用布爾模式(支持'+'等修飾符),你必須編寫'IN BOOLEAN MODE'而不是'IN NATURAL LANGUAGE MODE'。 – Solarflare