您可能要構建查詢取決於作爲搜索字符串傳遞的第一個字符。如果第一個字符是元音(a,e,o,i,u),則可以運行一個函數來構建使用這些元音的所有可能的組合。這是什麼意思:
<?php
$searchTerm = 'emran';
$probableTerms = buildProbableSearchTerms($searchTerm);
$sql = "SELECT * FROM new WHERE FNAME LIKE '{$probableTerms}' LIMIT 0, 30 ";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
{
echo '<tr>';
echo $row["FNAME"];
echo '<br>';
echo '</tr>';
}
}
}
function buildProbableSearchTerms($searchTerm){
$searchTerms = "";
if(strlen($searchTerm)<1){
return "";
}
$arrVowels = array("a", "e", "i", "o", "u");
$arrSString = str_split($searchTerm);
if(in_array(strtolower($arrSString[0]), $arrVowels)){
array_splice($arrSString, 0, 1);
foreach($arrVowels as $vowel){
$searchTerms .= "%{$vowel}" . implode("", $arrSString) . "% OR ";
}
$searchTerms = rtrim($searchTerms, " OR ");
}else{
$searchTerms .= "%{$searchTerm}%";
}
return $searchTerms;
}
var_dump($probableTerms);
// DISPLAYS: '%amran% OR %emran% OR %imran% OR %omran% OR %umran%'
這是解決一個非常複雜的問題。只有一個簡單的SQL查詢沒有簡單的方法。您將不得不建立某種搜索索引,使您可以檢索與給定術語相似的術語,然後查找與其關聯的條目。找到「相似」的術語可以從「交換幾個字母並查看它是否匹配」到通過文字挖掘和機器學習評分函數。 ;)這顯然不符合SO的格式。 –