成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

百度二面,MySQL 怎么做權重搜索?

數據庫 MySQL
搜索引擎做這種搜索需求當然得天獨厚,但是這種在 MySQL 中進行權重搜索的需求也不是沒有,業務初期數據量還不大的時候大概率不會考慮上 ES,這時候在 MySQL 中先簡單跑通邏輯才是最重要的。

考慮這樣一個搜索需求,有一個 MySQL 表,表中很多個列存放著不同的內容,希望用戶通過關鍵詞進行搜索的時候,能夠模糊匹配多個列,比如有 t1 列、t2 列、t3 列,同時還希望 t1 列的匹配權重最高,t3 列的匹配權重最低。簡單說就是如果有一個關鍵詞同時出現在記錄 A 的 t1 列 和里記錄 B 的 t2 列,那么記錄 A 應該優先展示,排序是在前面的。

注意這里是 MySQL,不是 ES,搜索引擎做這種搜索需求當然得天獨厚,但是這種在 MySQL 中進行權重搜索的需求也不是沒有,業務初期數據量還不大的時候大概率不會考慮上 ES,這時候在 MySQL 中先簡單跑通邏輯才是最重要的。

思考下該如何做?

模糊匹配

首先模糊匹配大家最常用的就是 like

SELECT * FROM test 
WHERE t1 LIKE '%標題%' 
 or t2 LIKE '%內容%' 
 or t3 LIKE '%注釋%''

當只需要簡單的模式匹配時 like 確實往往是更好的選擇。而在需要進行復雜匹配,如同一字段中包含多個模式,進行分組匹配等,REGEXP 則表現更為突出,Mysql 支持對列的正則表達式方式查詢,使用方式如下:

SELECT  * FROM test 
WHERE t1 regexp '標題'
 or t2 regexp '內容' 
 or t3 regexp '注釋'

權重搜索

權重搜索涉及到幾個 Mysql 函數。

  • LOCATE('標題', test.t1) : 查詢 "標題" 在 test.t1 列出現的位置,0 表示未找到。否則返回 坐標位置,坐標位置從 1 開始。
  • IF( 表達式, 1, 0):判斷表達式結果,TRUE 則返回 1,FALSE 則返回 0

下面我們來看如何基于這兩個函數來實現文章開頭的需求:

SELECT  *, ( 
    IF(LOCATE('標題',test.t1), 1, 0) 
     + IF(LOCATE('內容',test.t2) , 1, 0) 
     + IF(LOCATE('注釋',test.t3) , 1, 0) 
 ) AS weight 
FROM test 
WHERE test.t1 regexp '標題'
 or test.t2 regexp '內容' 
 or test.t3 regexp '注釋' 
order by weight desc

上面的查詢中,每個關鍵詞的權重都是 1,所以,在這 t1\t2\t3 三列中,關鍵詞出現次數最多的記錄將出現在搜索結果的第一位。

如果權重增加,那么權重高的關鍵詞將會影響排序規則。如下例子,將 t1 列的搜索權重改為 7:

SELECT  *, ( 
    IF(LOCATE('標題',test.t1), 7, 0) 
     + IF(LOCATE('內容',test.t2) , 2, 0) 
     + IF(LOCATE('注釋',test.t3) , 1, 0) 
 ) AS weight 
FROM test 
WHERE test.t1 regexp '標題'
 or test.t2 regexp '內容' 
 or test.t3 regexp '注釋' 
order by weight desc


責任編輯:武曉燕 來源: 飛天小牛肉
相關推薦

2011-05-27 13:27:34

權重SEO

2011-06-21 16:11:44

SEO

2021-06-07 05:46:20

前端架構前端架構

2011-10-28 16:19:21

百度搜索

2011-05-17 18:01:52

搜索引擎優化

2024-06-19 08:02:33

2014-11-24 10:28:51

2019-08-26 13:01:07

百度流量搜索

2021-01-28 06:07:32

百度搜索搜索引擎 應用

2012-11-16 11:01:50

移動搜索ASO

2023-09-04 00:00:07

百度長連接網絡

2011-06-01 17:40:29

百度收錄

2015-07-06 17:03:31

云計算百度

2023-07-18 08:28:58

注冊中心下線Nacos

2018-10-19 10:05:14

區塊鏈百度百度搜索

2023-06-13 08:25:14

注冊中心Nacos上線

2015-09-24 14:06:24

百度搜索Windows 10

2024-07-22 19:31:34

2012-11-25 15:42:47

互聯網百度搜索

2013-08-22 17:08:50

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品一区二 | 欧美亚洲国产日韩 | 国产精品国产三级国产播12软件 | 日韩在线一区视频 | 中文字幕第一页在线 | 色综合一区二区三区 | 日日操av | 毛片韩国 | 国产精品视频一区二区三区 | 国产视频在线观看一区二区三区 | 伊人精品在线视频 | 亚洲97 | 国产精品一区二区三区在线 | 久久久久久久久久久丰满 | 久久成人一区 | 久热国产在线 | 黄色免费在线观看网址 | 午夜视频网站 | 国产伦精品一区二区三区高清 | 欧美一区二区三区久久精品 | 久久精品91 | 欧美日韩高清免费 | 成人久久18免费 | 日韩福利| 久久久五月天 | 久久成人免费 | 成人精品福利 | 亚洲视频精品 | 亚洲国产精品久久久久 | 欧美自拍第一页 | 亚洲一级毛片 | 日本一区二区三区免费观看 | 亚洲视频免费观看 | 少妇久久久久 | 欧美精品一区二区免费 | 雨宫琴音一区二区在线 | 中文字幕在线观看一区二区 | 亚洲精品乱码久久久久久按摩观 | 男人天堂色| 97精品超碰一区二区三区 | 91久久久久久 |