我在PHP中有一個搜索引擎。通常情況下,搜索可以。搜索文本是「公司」,並在數據庫中存在「公司」在該領域...mysql中' - '和'&'字符串的問題
問題是,當搜索文本是&company
或-company
和數據是&company
或-company
沒有匹配。爲什麼?
問題與-
和&
串...
我在PHP中有一個搜索引擎。通常情況下,搜索可以。搜索文本是「公司」,並在數據庫中存在「公司」在該領域...mysql中' - '和'&'字符串的問題
問題是,當搜索文本是&company
或-company
和數據是&company
或-company
沒有匹配。爲什麼?
問題與-
和&
串...
嘗試把你的搜索詞在引號。這應該可以幫助MySQL的知道你在全文檢索的字面意思是這些字符:
SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE)
SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE)
如果您正在使用全文搜索,則&和 - 是保留字符。我找不到解決這個問題的好辦法。我所做的只是刪除特殊字符並運行全文搜索。例如,如果他們正在尋找At & t我搜索了「AT」「T」,但是如果您有噪音詞At和A在那裏,並且您不會得到任何結果。
另一種解決方案是檢測他們何時請求特殊字符並運行公司%搜索而不是全文搜索,但這會影響查詢的性能。
如果您有權訪問mysql,似乎可以更改單詞字符:請參閱http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html中的註釋 – 2010-01-15 17:37:27
使用全文搜索? &和 - 是全文中的保留字符。 (至少在MSSQL中) – 2010-01-15 17:06:56
@Jose Chama:在mySQL中,至少是'-'。 – 2010-01-15 17:08:39
是的,全文搜索 – 2010-01-15 17:11:17