搜索學(xué)習(xí)基礎(chǔ)--基本概念的簡(jiǎn)單闡述

關(guān)于查詢

查詢數(shù)據(jù)分為精確查找模糊查找

  • 精確查找:對(duì)于精確查找,我們都非常熟悉愈犹,就是這個(gè)值必須等于這個(gè)條件。比如我們常用的數(shù)據(jù)庫(kù)查詢中:
    select * from user_info where user_id = ?
  • 模糊查找:對(duì)于模糊查找勋颖,我們需要查找的范圍就是結(jié)果中的某個(gè)值必須包含這個(gè)條件饭玲。平時(shí)我們?cè)谝粋€(gè)文檔中查找某個(gè)
    單詞怪得,這就是模糊查找。

對(duì)于普通的查找蚕断,我們是從一個(gè)文檔中亿乳,一個(gè)一個(gè)的去遍歷匹配葛假。比如我們要從10w個(gè)數(shù)據(jù)中滋恬,
查找包含字符串“abc”的恢氯,那就相當(dāng)?shù)寐狻H绻@些數(shù)據(jù)在數(shù)據(jù)庫(kù)中敢靡,我們通常會(huì)建立索引,去優(yōu)化查詢速度赶站。對(duì)于比較大的文本內(nèi)容亲怠,
我們通常使用全文檢索的方式团秽∠扒冢總結(jié):對(duì)于優(yōu)化查詢焙格,我們使用數(shù)據(jù)庫(kù)建立索引和使用全文檢索图毕。

關(guān)于數(shù)據(jù)庫(kù)建立索引

為了優(yōu)化查詢速度,我們會(huì)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)建立索引眷唉。在mysql數(shù)據(jù)庫(kù)中予颤,有兩種索引方法:BtreeHash
這兩種方式為什么會(huì)加速查詢囤官。兩種方式有什么區(qū)別,這是我們必須了解的蛤虐。

  • Hash方法建立索引

Hash党饮,就是我們所謂的散列表,它的存儲(chǔ)是key-value結(jié)構(gòu)的驳庭。當(dāng)我們對(duì)數(shù)據(jù)建立索引后刑顺,我們的每個(gè)數(shù)據(jù)都會(huì)有一個(gè)對(duì)于的Hash值。當(dāng)我們?nèi)ゲ檎覕?shù)據(jù)的時(shí)候饲常,只要取條件
的Hash值即可蹲堂。數(shù)據(jù)存儲(chǔ)的位置通過(guò)Hash值快速找到柒竞。我們也從Hash算法的原理中可以看到,這種索引方式比較適合精確查找。下面舉個(gè)簡(jiǎn)單的Hash查找的例子:
HashCode = 2x+1
|hashcode|value|
|----|----|
|11|5|
|101|50|
|121|60|
...
假設(shè)庫(kù)中有大量的數(shù)據(jù),此時(shí)我們的搜索條件是60,我們?nèi)〉肏ashCode = 2*60+1 = 121茸苇,然后拿著121去庫(kù)中尋找其存放的位置。這樣就非常的速度。當(dāng)然這只是一個(gè)簡(jiǎn)單的Hash哭靖。
對(duì)于優(yōu)化散列表,減少?zèng)_突這些我們這里就不做討論铺坞。
如果想實(shí)現(xiàn)以下Hash算法整個(gè)過(guò)程,可以看下此博客哈希算法的Java實(shí)現(xiàn)

  • Btree方法建立索引

看到這個(gè)名字,我想大學(xué)里面學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)這門課程的都會(huì)首先想到數(shù)據(jù)結(jié)構(gòu)中的這個(gè)概念。用于搜索,我們肯定會(huì)想到二叉樹凝颇。不管數(shù)據(jù)庫(kù)索引它用的是哪種樹瘪弓,
它肯定是一種基于二叉搜索樹優(yōu)化的樹袱饭,所以我們只要了解二叉搜索樹這個(gè)結(jié)構(gòu)算法晾虑,我們就可以知道為什么使用Btree方式建立索引會(huì)加速查找了。它把原來(lái)的時(shí)間復(fù)雜度從
O(n) 轉(zhuǎn)變成了 O(log2(n))继找。因?yàn)槎鏄涞闹行虮闅v的結(jié)果就是根據(jù)key值排序的列表幻锁,所以這種方式對(duì)于范圍查找是非常合適的。
如果想實(shí)現(xiàn)以下二叉搜索樹的建立和查找的整個(gè)過(guò)程,可以看下此博客二叉搜索樹的Java實(shí)現(xiàn)

關(guān)于全文檢索

對(duì)于大偏的文檔,使用數(shù)據(jù)庫(kù)建立索引就非常不合適了。此時(shí)我們會(huì)建立全文索引入偷,而建立全文索引体捏,有正排索引倒排索引
兩者的區(qū)別從名字上就可以看出來(lái)。

  • 正排索引:通過(guò)文章查找關(guān)鍵詞
  • 倒排索引:通過(guò)關(guān)鍵詞查找文章

對(duì)于正排索引薄霜,也就是我們一般得搜索方式否副,對(duì)所有文章遍歷,查找包含關(guān)鍵詞得文章。而倒排索引呢纽乱,是給每個(gè)關(guān)鍵詞對(duì)應(yīng)匹配文檔敛熬,建立好索引夕吻。當(dāng)你查找得時(shí)候稚矿,這些關(guān)鍵詞在
哪些文檔出現(xiàn)過(guò)朱灿,出現(xiàn)得次數(shù)侣灶,出現(xiàn)得位置煞檩,一目了然注暗。倒排索引的解讀

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末左胞,一起剝皮案震驚了整個(gè)濱河市服猪,隨后出現(xiàn)的幾起案子坡脐,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門抡蛙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)熊昌,“玉大人,你說(shuō)我怎么就攤上這事÷捣睿” “怎么了婉徘?”我有些...
    開(kāi)封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蟹瘾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纵隔,這世上最難降的妖魔是什么蛾派? 我笑而不...
    開(kāi)封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上终佛,老公的妹妹穿的比我還像新娘。我一直安慰自己驶拱,他們只是感情好永丝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布坎弯。 她就那樣靜靜地躺著抠忘,像睡著了一般囚灼。 火紅的嫁衣襯著肌膚如雪蝎抽。 梳的紋絲不亂的頭發(fā)上樟结,一...
    開(kāi)封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天鱼辙,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顺又,可吹牛的內(nèi)容都是我干的咐熙。 我是一名探鬼主播弱恒,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼棋恼!你這毒婦竟也來(lái)了返弹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蘸泻,失蹤者是張志新(化名)和其女友劉穎琉苇,沒(méi)想到半個(gè)月后嘲玫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悦施,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年去团,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抡诞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穷蛹。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昼汗,靈堂內(nèi)的尸體忽然破棺而出肴熏,到底是詐尸還是另有隱情,我是刑警寧澤顷窒,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布蛙吏,位于F島的核電站,受9級(jí)特大地震影響鞋吉,放射性物質(zhì)發(fā)生泄漏鸦做。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一谓着、第九天 我趴在偏房一處隱蔽的房頂上張望泼诱。 院中可真熱鬧,春花似錦赊锚、人聲如沸治筒。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耸袜。三九已至,卻和暖如春牲平,著一層夾襖步出監(jiān)牢的瞬間句灌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工欠拾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胰锌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓藐窄,卻偏偏與公主長(zhǎng)得像资昧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荆忍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容