我正在尝试使用PHP改进搜索结果。例如当产品名称为ZSX-3185BC
时,用户在放置ZSX3185BC
之类的内容时无法找到该产品。到目前为止我得到的结果如下:
$input = '01.10-2010';
$to_replace = array('.','-');
$clean = str_replace($to_replace, '/',$input);`
我试过这个,但它无法正常工作(不确定,发表在评论中没有详细说明)
$str = "";
$len = strlen($strSearch) - 1;
// Loop through the search string to check each charecter is acceptable and strip those that are not
for ($i = 0; $i <= $len; $i++) {
if(preg_match("/\w|-| /",$strSearch[$i])) {
$str = $str . $strSearch[$i];
}
}
答案 0 :(得分:0)
您应该尝试直接在数据库查询中进行此类模糊匹配。模糊字符串匹配的常用方法是Levenshtein distance。
MySQL没有内置,但可以添加它。 See this SO question.
基本方法是向MySQL添加存储的函数。有Levenshtein implementation作为存储函数。
答案 1 :(得分:-1)
试试这个:
SELECT * FROM tablename WHERE replace(fieldname, '-', '') like '%ZSX3185BC%';