默认情况下, sphinx搜索是按照完全匹配来的,比如搜索 belt,那么完整包含belt的内容才会被搜索出来。
如果想实现mysql里面 like '%elt%'的模糊搜索功能,怎么做?
在关键词前后加上*,
例如关键词是elt, 变成*elt*然后再搜,就会把包含belt的内容搜索出来
如果想搜索包含elt和gucc的内容,怎么办?
把关键词用*包起来,然后加上空格分隔,就可以了: *gucc* *belt*
如果想搜索包含elt或gucc的内容,怎么办?
把关键词用*包起来,然后加上|分隔,就可以了: *gucc* | *belt*
//把关键词都用*包起来,这样就不用完整匹配了。
//如果是要多个关键词都具备,就这样: *gucc* *belt*
//如果是只要一个关键词具备即可,就这样: *gucc*|*belt*
$arr_keyword = explode(' ', $keyword);
foreach ($arr_keyword as $k=>$item){
$arr_keyword[$k] = '*' . $item . '*';
}
$keyword = implode(' ', $arr_keyword);