mysql 關(guān)鍵詞相關(guān)度排序方法詳細(xì)示例分析
更新時(shí)間:2013年08月12日 09:05:43 作者:
以下是對(duì)mysql關(guān)鍵詞相關(guān)度排序方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
小項(xiàng)目有時(shí)需要用到關(guān)鍵詞搜索相關(guān)性排序,用sphinx顯得殺雞用牛刀,就用mysql的order by對(duì)付下。
方法一:
復(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
方法二:
打個(gè)比方,如果搜索關(guān)鍵字“IBM”,“服務(wù)器”,
首先,對(duì)搜索關(guān)鍵字的處理,代碼如下:
復(fù)制代碼 代碼如下:
$kw = preg_replace("/(\s+)|( +)+/","", $kw);//替代空格,換行,tab,中文空格
$kw = preg_replace( "/(^\s*)|(\s*$)/ ", "",$kw);//去除首尾空格
$kw = preg_replace("/(\s+)/", "", $kw);//替換多個(gè)空格為一個(gè)空格
$q = explode('',$kw);//枚舉關(guān)鍵字
這里還需要添加一個(gè)去掉標(biāo)點(diǎn)符號(hào)的代碼,但是這段代碼會(huì)出現(xiàn)問(wèn)題,不知道如何解決。
然后是生成SQL語(yǔ)句的代碼
復(fù)制代碼 代碼如下:
$f = array(”name”,”description”); //查詢的字段name=產(chǎn)品名,description=產(chǎn)品描述
$s = array(4,2); //權(quán)重,name字段匹配積分4分,description字段匹配積2分,最后按積分排序
復(fù)制代碼 代碼如下:
//創(chuàng)建查詢條件語(yǔ)句
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é)果按值排序的簡(jiǎn)要教程
- 兩種mysql對(duì)自增id重新從1排序的方法
- MySQL中按照多字段排序及問(wèn)題解決
- mysql的中文數(shù)據(jù)按拼音排序的2個(gè)方法
- Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
- 數(shù)據(jù)庫(kù)查詢排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
- MYSQL 關(guān)于兩個(gè)經(jīng)緯度之間的距離由近及遠(yuǎn)排序
- 讓MySQL支持中文排序的實(shí)現(xiàn)方法
- MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法
相關(guān)文章
MySQL之information_schema數(shù)據(jù)庫(kù)詳細(xì)講解
這篇文章主要介紹了MySQL之information_schema數(shù)據(jù)庫(kù)詳細(xì)講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Mysql 執(zhí)行一條語(yǔ)句的整個(gè)過(guò)程詳細(xì)
這篇文章主要介紹了Mysql 執(zhí)行一條語(yǔ)句的整個(gè)詳細(xì)過(guò)程,Mysql的邏輯架構(gòu)整體分為兩部分,Server層和存儲(chǔ)引擎層,下面文章內(nèi)容具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-02-02MySQL數(shù)據(jù)庫(kù)的shell腳本自動(dòng)備份
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)的shell腳本自動(dòng)備份的相關(guān)資料,網(wǎng)站或應(yīng)用的后臺(tái)都有備份數(shù)據(jù)庫(kù)的功能按鈕,但需要去手工執(zhí)行。我們需要一種安全的,每天自動(dòng)備份的方法需要的朋友可以參考下2017-03-03myeclipse中連接mysql數(shù)據(jù)庫(kù)示例代碼
這篇文章主要為大家詳細(xì)介紹了MyEclipse連接MySQL數(shù)據(jù)庫(kù)圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10MySQL-tpch 測(cè)試工具簡(jiǎn)要手冊(cè)
tpch是TPC(Transaction Processing Performance Council)組織提供的工具包。用于進(jìn)行OLAP測(cè)試,以評(píng)估商業(yè)分析中決策支持系統(tǒng)(DSS)的性能。它包含了一整套面向商業(yè)的ad-hoc查詢和并發(fā)數(shù)據(jù)修改,強(qiáng)調(diào)測(cè)試的是數(shù)據(jù)庫(kù)、平臺(tái)和I/O性能,關(guān)注查詢能力2016-05-05