全文搜索仅返回完全匹配

时间:2009-09-01 07:17:00

标签: mysql

我有以下脚本

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'

为什么这只会返回完全匹配?例如,如果i $搜索锁匠什么都没有出现。 但如果我搜索锁匠,我会得到两个结果。 (两个搜索都包括$ zip ='75061')

3 个答案:

答案 0 :(得分:2)

一种方法是用外卡替换最后几个字符并在布尔模式下执行MATCH()AGAINST

搜索词“locksmith”应该在php中改为“locksmith *”,你的代码就是这样的

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

出于一般目的,您应该从原始搜索字词中的字词中删除“s”,“ed”,“ing”等,并将外卡*添加到结尾。

答案 1 :(得分:0)

您的桌子是否可以使用fulltext restrictions

答案 2 :(得分:0)

这就是全文匹配的工作原理。它不知道复数并且匹配整个单词。这个问题不时出现。偶尔当你看到生成的建议“你的意思是......”时,这是一个试图解决这个问题的页面。