mysql 關(guān)鍵詞相關(guān)度排序方法詳細(xì)示例分析
更新時間:2013年08月12日 09:05:43 作者:
以下是對mysql關(guān)鍵詞相關(guān)度排序方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
小項目有時需要用到關(guān)鍵詞搜索相關(guān)性排序,用sphinx顯得殺雞用牛刀,就用mysql的order by對付下。
方法一:
復(fù)制代碼 代碼如下:
select * from articles where (title LIKE '%keywords%') or (content LIKE '%helloworld%') order by ((CASE WHEN title LIKE '%keywords%' THEN 2 ELSE 0 END) + (CASE WHEN content LIKE '%helloworld%' THEN 1 ELSE 0 END)) ASC, dateline DESC
方法二:
打個比方,如果搜索關(guān)鍵字“IBM”,“服務(wù)器”,
首先,對搜索關(guān)鍵字的處理,代碼如下:
復(fù)制代碼 代碼如下:
$kw = preg_replace("/(\s+)|( +)+/","", $kw);//替代空格,換行,tab,中文空格
$kw = preg_replace( "/(^\s*)|(\s*$)/ ", "",$kw);//去除首尾空格
$kw = preg_replace("/(\s+)/", "", $kw);//替換多個空格為一個空格
$q = explode('',$kw);//枚舉關(guān)鍵字
這里還需要添加一個去掉標(biāo)點(diǎn)符號的代碼,但是這段代碼會出現(xiàn)問題,不知道如何解決。
然后是生成SQL語句的代碼
復(fù)制代碼 代碼如下:
$f = array(”name”,”description”); //查詢的字段name=產(chǎn)品名,description=產(chǎn)品描述
$s = array(4,2); //權(quán)重,name字段匹配積分4分,description字段匹配積2分,最后按積分排序
復(fù)制代碼 代碼如下:
//創(chuàng)建查詢條件語句
for($i=0;$i<count($q);$i++){
for($j=0;$j<count($f);$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”;
您可能感興趣的文章:
- Mysql row number()排序函數(shù)的用法和注意
- 將MySQL查詢結(jié)果按值排序的簡要教程
- 兩種mysql對自增id重新從1排序的方法
- MySQL中按照多字段排序及問題解決
- mysql的中文數(shù)據(jù)按拼音排序的2個方法
- Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
- 數(shù)據(jù)庫查詢排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
- MYSQL 關(guān)于兩個經(jīng)緯度之間的距離由近及遠(yuǎn)排序
- 讓MySQL支持中文排序的實現(xiàn)方法
- MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法
相關(guān)文章
mysql正則表達(dá)式(regexp和rlike)的搜索功能實例分析
這篇文章主要介紹了mysql正則表達(dá)式(regexp和rlike)的搜索功能,結(jié)合實例形式分析了mysql正則表達(dá)式使用regexp和rlike的搜索功能相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下2019-12-12
MySQL數(shù)據(jù)庫設(shè)計概念及多表查詢和事物操作
數(shù)據(jù)庫設(shè)計就是根據(jù)業(yè)務(wù)系統(tǒng)具體需求,結(jié)合我們所選用的DBMS,為這個業(yè)務(wù)系統(tǒng)構(gòu)造出最優(yōu)的數(shù)據(jù)存儲模型,本文給大家介紹MySQL數(shù)據(jù)庫設(shè)計概念及多表查詢和事物操作,感興趣的朋友一起看看吧2022-05-05
MySQL中報錯:Can’t find file: ‘./mysql/plugin.frm’的解決方法
這篇文章主要給大家介紹了關(guān)于在MySQL中報錯:Can't find file: './mysql/plugin.frm'的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Mysql中 show table status 獲取表信息的方法
這篇文章主要介紹了Mysql中 show table status 獲取表信息的方法的相關(guān)資料,需要的朋友可以參考下2016-03-03
Mysql 5.7.17 winx64在win7上的安裝教程
本文給大家介紹Mysql 5.7.17 winx64在win7上的安裝教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-04-04
使用mysql workbench自動生成ER圖的實現(xiàn)步驟
MySQL Workbench是一款專為MySQL設(shè)計的ER/數(shù)據(jù)庫建模工具,它是著名的數(shù)據(jù)庫設(shè)計工具DBDesigne4的繼任者,可以通過MySQL Workbench設(shè)計和創(chuàng)建新的數(shù)據(jù)庫圖示,本文給大家介紹了使用mysql workbench自動生成ER圖的實現(xiàn)步驟,需要的朋友可以參考下2024-06-06

