曾今我也用like 『%kw%』 來查詢滿足條件的資料,但是如果遇到多關鍵字,在排序上就出現了問題,而大家當然願意把最匹配的搜尋結果排在前列,而不是按其他標準排序。
打個比方,如果搜尋關鍵字"ibm","伺服器",
首先,對搜尋關鍵字的處理,**如下:
$kw = preg_replace("/(\s+)|( +)+/", " ", $kw);//替代空格,換行,tab,中文空格
$kw = preg_replace( "/(^\s*)|(\s*$)/ ", "",$kw);//去除首尾空格
$kw = preg_replace("/(\s+)/", " ", $kw);//替換多個空格為乙個空格
//$kw = preg_replace( "/[[:punct:]]/", " ", $kw);//去除所有標點符號,此**有問
$q = explode(" ",$kw);//列舉關鍵字
這裡還需要新增乙個去掉標點符號的**,但是這段**會出現問題,不知道如何解決。
然後是生成sql語句的**
$f = array("name","description"); //查詢的字段name=產品名,description=產品描述
$s = array(4,2); //權重,name欄位匹配積分4分,description欄位匹配積2分,最後按積分排序
//建立查詢條件語句
for($i=0;$i
for($j=0;$j
$clause[$c] = " (".$f[$j]." like 『%".$q[$i]."%』) ";
$score[$c] = " if(locate(』".$q[$i]."『, ".$f[$j]."), ".$s[$j].", 0) ";
$c++;
}
}
$sql = "select id, name, description,(".implode("+",$score).") as score from product where (".implode(" or ",$clause).") order by score desc";
搜尋匹配關鍵字
改變關鍵字顏色 呼叫在你的cell中 tableview cellforrow 返回單元格內容 uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath indexpathelse range ...
LIKE匹配關鍵字
1.匹配任意數目字元 包括零個字元 select from edo user where true name like 王 應用 關鍵字查詢 where u.true name like 2.匹配任何單個字元 select from edo user where true name like 王 應...
mysql關鍵字匹配度模糊查詢
有時候專案中需要進行模糊查詢,但是要對查詢出來的結果進行匹配度排序,比如搜尋關鍵字是 北 需要把資料庫中第乙個字是北的排在前面,此時就可以用mysql的instr函式。instr 欄位名,字串 這個函式返回字串在某乙個欄位的內容中的位置,沒有找到字串返回0,否則返回位置 從1開始 例1 公升序排 s...