2009-09-01 89 views
2

我有以下腳本全文搜索僅返回精確匹配

select c.id 
from ".TBL_COUPONS." as c 
inner join ".TBL_BUSINESS." as b 
on c.business_id = b.business_id 
inner join ".TBL_BLOCATION." as l 
on c.business_id = l.business_id 
where 
(match(c.name) against ('$search') 
    or 
match (b.name,b.category,b.subcat) against ('$search')) 
and l.zip = '$zip' 

爲什麼會這樣只會返回精確匹配?例如,如果我搜索鎖匠什麼都沒有出現。 但如果我搜索鎖匠,我會得到兩個結果。 (兩項搜索均包含$ zip ='75061')

回答

2

一種方式做到這一點是一個外卡,以取代過去的幾個字符和布爾模式做MATCH()反對

搜索條件「鎖匠」應在php改變「鎖匠*」和你的代碼將在原有的搜索詞是這樣的

match(c.name) against ('$search' IN BOOLEAN MODE) 

對於一般目的,你應該刪除「S」,「編輯」,「荷蘭國際集團」等從文字和通配符*增加結束。

0

您的表格與fulltext restrictions確定嗎?

+0

據我所知可以。 –

+0

是拉丁語1個多字節字符集? –

0

這就是全文匹配的工作原理。它不知道複數和匹配整個單詞。這個問題不時出現。偶爾當你看到一個生成的建議「你的意思是......」這是一個試圖解決這個確切問題的頁面。

+1

我應該使用LIKE嗎?我需要變體。 –

相關問題