2009-09-01 49 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吗?我需要变体。 –

相关问题