Elasticsearch學(xué)習(xí)筆記(15) - 相關(guān)性算分

簡(jiǎn)介

在Elasticsearch中菩收,相關(guān)性算分描述了一個(gè)文檔和查詢語句的匹配程度。Elasticsearch會(huì)對(duì)每個(gè)匹配查詢條件的結(jié)果進(jìn)行相關(guān)性分?jǐn)?shù)的計(jì)算鬓椭,即:_score颠猴。

算分的本質(zhì)是為了排序,需要把最符合用戶需求的文檔排列在最前面小染。在Elasticsearch5.0以前翘瓮,默認(rèn)的相關(guān)性算分為TF-IDF。5.0及之后的版本采用的是BM25氧映。

詞頻 - TF

詞頻春畔,英文縮寫為TF,英文全寫為Term Frequency岛都。詞頻用于描述檢索詞在一篇文檔中出現(xiàn)的頻率律姨。即:檢索詞出現(xiàn)的次數(shù)除以文檔的總字?jǐn)?shù)。

衡量一條查詢語句和結(jié)果文檔相關(guān)性的簡(jiǎn)單方法:簡(jiǎn)單地將搜索語句中的每一個(gè)詞的TF進(jìn)行相加臼疫。

例如择份,我的蘋果,即為:TF(我) + TF(的) + TF(蘋果)烫堤。

停用詞荣赶,英文名為Stop Word,例如我的蘋果中的在文檔中可能出現(xiàn)很多次鸽斟,但貢獻(xiàn)的相關(guān)度卻幾乎沒有用處拔创,因此不應(yīng)該考慮他們的詞頻。

逆文檔頻率 - IDF

相對(duì)于逆文檔頻率富蓄,我們先來說說文檔頻率剩燥。

文檔頻率,英文縮寫為DF立倍,英文全寫為Document Frequency灭红,用于檢索詞在所有文檔中出現(xiàn)的頻率。

  • 蘋果 在相對(duì)較少的文檔中出現(xiàn)
  • 在相對(duì)較多的文檔中出現(xiàn)
  • 在大量的文檔中出現(xiàn)

逆文檔頻率口注,英文全寫為:Inverse Document Frequency变擒。簡(jiǎn)單說也就是:

log(全部文檔數(shù) / 檢索詞出現(xiàn)過的文檔總數(shù))。

TF-IDF

TF-IDF的本質(zhì)就是將TF求和變成了加權(quán)求和寝志。

TF(我) * IDF(我) + TF(的) * IDF(的) + TF(蘋果) * IDF(蘋果)娇斑。

出現(xiàn)的文檔數(shù) 總文檔數(shù) IDF
5億 10億 log(2) = 1
10億 10億 log(1) = 0
蘋果 200萬 10億 log(500) = 8.96

TF-IDF的概念

  1. 被公認(rèn)為信息檢索領(lǐng)域最重要的發(fā)明
  2. 除了在信息檢索領(lǐng)域策添,在文獻(xiàn)分類和其他相關(guān)領(lǐng)域都有著非常廣泛的應(yīng)用
  3. 關(guān)于其歷史及精確定義,參考維基百科的TF-IDF
  4. 現(xiàn)代搜索引擎毫缆,對(duì)TF-IDF進(jìn)行了大量細(xì)微的優(yōu)化

Lucene的TF-IDF相關(guān)性算分公式

TF-IDF

BM25

  1. 從Elasticsearch5.0開始舰攒,默認(rèn)算法由TF-IDF改為BM25
  2. 和經(jīng)典的TF-IDF相比,當(dāng)TF無限增加時(shí)悔醋,BM25計(jì)算的相關(guān)性分?jǐn)?shù)會(huì)趨于一個(gè)固定數(shù)值。
BM25

Explain API

在查詢語句時(shí)兽叮,我們可通過explain查看TF-IDF芬骄。

# 創(chuàng)建索引
PUT testscore
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text"
      }
    }
  }
}

# 寫入數(shù)據(jù)
PUT testscore/_bulk
{ "index": { "_id": 1 }}
{ "content":"we use Elasticsearch to power the search" }
{ "index": { "_id": 2 }}
{ "content":"we like elasticsearch" }
{ "index": { "_id": 3 }}
{ "content":"The scoring of documents is caculated by the scoring formula" }
{ "index": { "_id": 4 }}
{ "content":"you know, for search" }

# 查詢語句。
# 查詢的時(shí)間鹦聪,我們發(fā)現(xiàn)id為2的文檔卻排列在第一位账阻。
# 原因在于,相對(duì)于id為1的文檔泽本,id為2的文檔單詞數(shù)更少淘太。
POST /testscore/_search
{
  "explain": true,
  "query": {
    "match": {
      //"content":"you"
      "content": "elasticsearch"
      //"content":"the"
      //"content": "the elasticsearch"
    }
  }
}

Boosting

Boosting是一種控制相關(guān)性分?jǐn)?shù)的手段,可作用于索引规丽、字段或查詢子條件蒲牧。

  1. 當(dāng)boost > 1時(shí),算分的相關(guān)度相關(guān)性會(huì)增加
  2. 當(dāng)0 < boost < 1時(shí)赌莺,算分的相關(guān)度相對(duì)性會(huì)降低
  3. 當(dāng)boost < 0時(shí)冰抢,貢獻(xiàn)負(fù)分
POST testscore/_search
{
    "query": {
        "boosting" : {
            "positive" : {
                "term" : {
                    "content" : "elasticsearch"
                }
            },
            "negative" : {
                 "term" : {
                     "content" : "like"
                }
            },
            "negative_boost" : 0.2
        }
    }
}

總結(jié)

  1. 什么是相關(guān)性,相關(guān)性分?jǐn)?shù)計(jì)算的簡(jiǎn)單介紹艘狭,主要為:TF-IDF / BM25
  2. 如何在Elasticsearch中定制相關(guān)度算法的參數(shù)
  3. Elasticsearch可以對(duì)索引挎扰、字段和查詢語句設(shè)置boosting參數(shù)

參考鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巢音,隨后出現(xiàn)的幾起案子遵倦,更是在濱河造成了極大的恐慌,老刑警劉巖官撼,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梧躺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡歧寺,警方通過查閱死者的電腦和手機(jī)燥狰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斜筐,“玉大人龙致,你說我怎么就攤上這事∏炅矗” “怎么了目代?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我榛了,道長(zhǎng)在讶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任霜大,我火速辦了婚禮构哺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘战坤。我一直安慰自己曙强,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布途茫。 她就那樣靜靜地躺著碟嘴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囊卜。 梳的紋絲不亂的頭發(fā)上娜扇,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音栅组,去河邊找鬼雀瓢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛玉掸,可吹牛的內(nèi)容都是我干的致燥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼排截,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嫌蚤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起断傲,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤脱吱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后认罩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箱蝠,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年垦垂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宦搬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劫拗,死狀恐怖间校,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情页慷,我是刑警寧澤憔足,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布胁附,位于F島的核電站,受9級(jí)特大地震影響滓彰,放射性物質(zhì)發(fā)生泄漏控妻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一揭绑、第九天 我趴在偏房一處隱蔽的房頂上張望弓候。 院中可真熱鬧,春花似錦他匪、人聲如沸弓叛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陈惰,卻和暖如春畦徘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抬闯。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工井辆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溶握。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓杯缺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親睡榆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萍肆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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