首页 > 解决方案 > 如何在 SQL 数据库中搜索拼写错误的关键字

问题描述

%LIKE% 会给我遵循特定模式的结果,例如如果有 iPhone 8,然后如果我搜索“iPhone”,我得到的结果 iPhone 8 到目前为止非常好,但我想要的是如果用户搜索“iphone8” " 或 "iPhone 8" 在这种情况下,用户不会在这里得到任何东西是我试过的

function patternn($p) 
{
      $p="%".$p."%";
      return $p;
}

function like_match($pattern, $subject)
{
    $pattern = str_replace('%', '.*', preg_quote($pattern, '/'));
    return (bool) preg_match("/^{$pattern}$/i", $subject);
}

function mystripos($pattern1,$subject1)
{
    $resultstr=stripos($pattern1,$subject1);
    $zeroo=0;
    $yn="";

    if($resultstr===$zeroo) {
        $yn="yes";   
    } elseif($resultstr>=1){
        $yn="yes";
    }else{
        $yn="no";
    }

    return $yn;
}

function mystrripos($pattern2,$subject2)
{
    $resultstr1=strripos($pattern2,$subject2);
    $zeroo1=0;
    $yn1="";

    if($resultstr1===$zeroo1) {
        $yn1="yes";
    } elseif($resultstr1>=1) {
        $yn1="yes";
    } else {
        $yn1="no";
    }
    return $yn1;
}


function cutinhalf1($strc)
{
    $length=strlen($strc);
    $newlength=0;

    if($length % 2==0) {
        $newlength=$length/2;
    }else{
        $newlength=$length/2;
        $newlength=$newlength+0.5;
    }

    $strc=substr($strc, 0, $newlength); 
    return $strc;
}


function cutinhalf2($strc2)
{
    $length2=strlen($strc2);
    $newlength2=0;

    if($length2 % 2==0) {
        $newlength2=$length2/2;
    }else{
        $newlength2=$length2/2;
        $newlength2=$newlength2-0.5;
    }

    $strc2=substr($strc2, $newlength2); 
    return $strc2;
}


if  (   like_match(patternn($name),$keywordd)==1 || 
        like_match(patternn($brand),$keywordd)==1 || 
        like_match(patternn($model),$keywordd)==1 || 
        like_match(patternn($type),$keywordd)==1 || 
        like_match(patternn($cpu),$keywordd)==1 || 
        like_match(patternn($gpu),$keywordd)==1 || 
        like_match(patternn($gpu_spec),$keywordd)==1 || 
        like_match(patternn($refresh_rate),$keywordd)==1  
    ) {
    $sql="SELECT image1 FROM pc where id=$idd";
    $result= mysqli_query($db, $sql);
    while ($row = mysqli_fetch_array($result)) {
        echo"<img src='images/"  .$row["image1"]."'>";
    } elseif (    
            mystripos($name,$keywordd)=="yes"||
            mystripos($name,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($name,cutinhalf1($keywordd))=="yes"||
            mystripos($name,cutinhalf2($keywordd))=="yes"||
            mystrripos($name,$keywordd)=="yes"||
            mystrripos($name,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($name,cutinhalf1($keywordd))=="yes"||
            mystrripos($name,cutinhalf2($keywordd))=="yes"||

            mystripos($brand,$keywordd)=="yes"||
            mystripos($brand,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($brand,cutinhalf1($keywordd))=="yes"||
            mystripos($brand,cutinhalf2($keywordd))=="yes"||
        
            mystrripos($brand,$keywordd)=="yes"||
            mystrripos($brand,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($brand,cutinhalf1($keywordd))=="yes"||
            mystrripos($brand,cutinhalf2($keywordd))=="yes"||
    
            mystripos($model,$keywordd)=="yes"||
            mystripos($model,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($model,cutinhalf1($keywordd))=="yes"||
            mystripos($model,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($model,$keywordd)=="yes"||
            mystrripos($model,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($model,cutinhalf1($keywordd))=="yes"||
            mystrripos($model,cutinhalf2($keywordd))=="yes"||
    
            mystripos($type,$keywordd)=="yes"||
            mystripos($type,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($type,cutinhalf1($keywordd))=="yes"||
            mystripos($type,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($type,$keywordd)=="yes"||
            mystrripos($type,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($type,cutinhalf1($keywordd))=="yes"||
            mystrripos($type,cutinhalf2($keywordd))=="yes"||
        
            mystripos($cpu,$keywordd)=="yes"||
            mystripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($cpu,cutinhalf1($keywordd))=="yes"||
            mystripos($cpu,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($cpu,$keywordd)=="yes"||
            mystrripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($cpu,cutinhalf1($keywordd))=="yes"||
            mystrripos($cpu,cutinhalf2($keywordd))=="yes"||
        
            mystripos($gpu,$keywordd)=="yes"||
            mystripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($gpu,cutinhalf1($keywordd))=="yes"||
            mystripos($gpu,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($gpu,$keywordd)=="yes"||
            mystrripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($gpu,cutinhalf1($keywordd))=="yes"||
            mystrripos($gpu,cutinhalf2($keywordd))=="yes"||
        
            mystripos($gpu_spec,$keywordd)=="yes"||
            mystripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
            mystripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($gpu_spec,$keywordd)=="yes"||
            mystrripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
            mystrripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
        
            mystripos($refresh_rate,$keywordd)=="yes"||
            mystripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
            mystripos($refresh_rate,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($refresh_rate,$keywordd)=="yes"||
            mystrripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
            mystrripos($refresh_rate,cutinhalf2($keywordd))=="yes"

        ) {
        $sql="SELECT image1 FROM pc where id=$idd";
        $result= mysqli_query($db, $sql);
        while ($row = mysqli_fetch_array($result))
        {
            echo"<img src='images/"  .$row["image1"]."'>";
        }
    }
}

标签: mysql

解决方案


推荐阅读