我需要在我的数据库中寻找一个句子。
我用" LIKE" :
SELECT * FROM `TABLE` WHERE `TEXT` LIKE '%toto tata titi%';
但是,我需要使用" MATCH" :
SELECT * FROM `TABLE` WHERE match(`TEXT`) AGAINST ('+toto +tata +titi' IN BOOLEAN MODE)
或
SELECT * FROM `TABLE` WHERE match(`TEXT`) AGAINST ('+toto tata titi' IN BOOLEAN MODE)
但查询" MATCH"没有使用" LIKE"返回相同数量的记录。
那么如何搜索匹配的句子?
答案 0 :(得分:0)
这两个陈述非常不同:
WHERE `TEXT` LIKE '%toto tata titi%'
WHERE match(`TEXT`) AGAINST ('+toto +tata +titi' IN BOOLEAN MODE)
第一个查找包含14个字符'toto tata titi'
的字符串,看起来就像那样。它与'tata titi toto'
不匹配。
第二个按字词进行搜索,因此它也会匹配'tata titi toto'
和'toto and xxx tata yyy titi'
。
等效的like
逻辑更像是:
WHERE `TEXT` LIKE '%toto%' and
`TEXT` LIKE '%tata%' and
`TEXT` LIKE '%titi%'
这不完全相同,因为这将匹配'tototatatiti'
版本不会匹配的match
。但它可能足够接近你想要的东西。