我遇到了問題。Mysql帶加號的全文搜索
在我的MySql數據庫中,我在產品表中有40000行。表格有一列叫做T9Text。 我的一行T9Text區域是這樣的:
UNISNLS106B UNI.SNLS 106B SNLS-106B M.OT. 12V 2DELİKMOTOR CRAFT TIPI UNIPOINT 66-205 66205 F02Z-11390-A F02Z11390A E90Z-11390-A E90Z11390A F4DZ-11390-A F4DZ11390A F3VY-11390-A F3VY11390A E90Z-11390-A E90Z11390A FORD ESCORT MERCURY TRACER FORD
對於自動完成過程,我在db中運行存儲過程。它是這樣的:
SELECT p.Code,
p.Name,
p.`T9Text`,
MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) AS SCORE
FROM product p
WHERE MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) >0
GROUP BY p.Name
ORDER BY SCORE DESC
像這樣,它工作得很好,只返回一行。
但我需要寫我在那裏的條件是這樣的:
MATCH (p.T9Text) AGAINST ('+*UNI* +*SNLS* +*106B*' IN BOOLEAN MODE) >0
有了上面的代碼返回1877年行。它就像加號不起作用
MATCH (p.T9Text) AGAINST ('+*UNISNLS106B*' IN BOOLEAN MODE) >0
MATCH (p.T9Text) AGAINST ('+*NISNLS106B*' IN BOOLEAN MODE) >0
用第一個查詢返回1行,但第二個查詢返回0行。
所以,有我的問題:在mysql全文搜索,我不能使用+ 測試表達式? 如果沒有,有沒有辦法做到這一點? (除了LIKE)
你試過把它作爲'\ +'來轉義嗎? –
我認爲問題出在'*'上 - 這個只能用在單詞的最後。 – Barmar
@DannyBeckett MATCH(p.T9Text)反對('\ + * NISNLS106B *'BOOLEAN模式)'沒有任何返回 – makcura