1.相關(guān)性簡(jiǎn)介
默認(rèn)情況下,返回結(jié)果是按相關(guān)性倒序排列的胎围。 但是什么是相關(guān)性吁系? 相關(guān)性如何計(jì)算德召?
每個(gè)文檔都有相關(guān)性評(píng)分,用一個(gè)相對(duì)的浮點(diǎn)數(shù)字段?_score?來表示 --?_score?的評(píng)分越高汽纤,相關(guān)性越高上岗。
查詢語句會(huì)為每個(gè)文檔添加一個(gè)?_score?字段。評(píng)分的計(jì)算方式取決于不同的查詢類型 -- 不同的查詢語句用于不同的目的:fuzzy?查詢會(huì)計(jì)算與關(guān)鍵詞的拼寫相似程度冒版,terms查詢會(huì)計(jì)算 找到的內(nèi)容與關(guān)鍵詞組成部分匹配的百分比液茎,但是一般意義上我們說的全文本搜索是指計(jì)算內(nèi)容與關(guān)鍵詞的類似程度。
ElasticSearch的相似度算法被定義為 TF/IDF辞嗡,即檢索詞頻率/反向文檔頻率捆等,包括以下內(nèi)容:
a.檢索詞頻率:
檢索詞在該字段出現(xiàn)的頻率?出現(xiàn)頻率越高续室,相關(guān)性也越高栋烤。 字段中出現(xiàn)過5次要比只出現(xiàn)過1次的相關(guān)性高。
b.反向文檔頻率:
每個(gè)檢索詞在索引中出現(xiàn)的頻率挺狰?頻率越高明郭,相關(guān)性越低。 檢索詞出現(xiàn)在多數(shù)文檔中會(huì)比出現(xiàn)在少數(shù)文檔中的權(quán)重更低丰泊, 即檢驗(yàn)一個(gè)檢索詞在文檔中的普遍重要性薯定。
c.字段長(zhǎng)度準(zhǔn)則:
字段的長(zhǎng)度是多少?長(zhǎng)度越長(zhǎng)瞳购,相關(guān)性越低话侄。 檢索詞出現(xiàn)在一個(gè)短的?title?要比同樣的詞出現(xiàn)在一個(gè)長(zhǎng)的?content?字段評(píng)分高。
單個(gè)查詢可以使用TF/IDF評(píng)分標(biāo)準(zhǔn)或其他方式学赛,比如短語查詢中檢索詞的距離或模糊查詢里的檢索詞相似度年堆。
相關(guān)性并不只是全文本檢索的專利。也適用于yes|no的子句盏浇,匹配的子句越多变丧,相關(guān)性評(píng)分越高。
如果多條查詢子句被合并為一條復(fù)合查詢語句绢掰,比如?bool?查詢痒蓬,則每個(gè)查詢子句計(jì)算得出的評(píng)分會(huì)被合并到總的相關(guān)性評(píng)分中。
2.理解評(píng)分標(biāo)準(zhǔn)
當(dāng)調(diào)試一條復(fù)雜的查詢語句時(shí)滴劲,想要理解相關(guān)性評(píng)分?_score?是比較困難的攻晒。ElasticSearch 在 每個(gè)查詢語句中都有一個(gè)explain參數(shù),將?explain?設(shè)為?true?就可以得到更詳細(xì)的信息哑芹。
<1>?explain?參數(shù)可以讓返回結(jié)果添加一個(gè)?_score?評(píng)分的得來依據(jù)捕透。
首先碴萧,我們看一下普通查詢返回的元數(shù)據(jù):
這里加入了該文檔來自于哪個(gè)節(jié)點(diǎn)哪個(gè)分片上的信息,這對(duì)我們是比較有幫助的末购,因?yàn)樵~頻率和 文檔頻率是在每個(gè)分片中計(jì)算出來的破喻,而不是每個(gè)索引中:
然后返回值中的?_explanation?會(huì)包含在每一個(gè)入口,告訴你采用了哪種計(jì)算方式盟榴,并讓你知道計(jì)算的結(jié)果以及其他詳情:
<1>?honeymoon?相關(guān)性評(píng)分計(jì)算的總結(jié)
<2> 檢索詞頻率
<3> 反向文檔頻率
<4> 字段長(zhǎng)度準(zhǔn)則
注:輸出?explain?結(jié)果代價(jià)是十分昂貴的曹质,它只能用作調(diào)試工具 --千萬不要用于生產(chǎn)環(huán)境。
第一部分是關(guān)于計(jì)算的總結(jié)擎场。告訴了我們?"honeymoon"?在?tweet字段中的檢索詞頻率/反向文檔頻率或 TF/IDF羽德。
然后解釋了計(jì)算的權(quán)重是如何計(jì)算出來的:
檢索詞頻率:
檢索詞 `honeymoon` 在 `tweet` 字段中的出現(xiàn)次數(shù)。
反向文檔頻率:
檢索詞 `honeymoon` 在 `tweet` 字段在當(dāng)前文檔出現(xiàn)次數(shù)與索引中其他文檔的出現(xiàn)總數(shù)的比率迅办。
字段長(zhǎng)度準(zhǔn)則:
文檔中 `tweet` 字段內(nèi)容的長(zhǎng)度 -- 內(nèi)容越長(zhǎng)宅静,值越小。
復(fù)雜的查詢語句解釋也非常復(fù)雜站欺,但是包含的內(nèi)容與上面例子大致相同姨夹。 通過這段描述我們可以了解搜索結(jié)果是如何產(chǎn)生的船响。
3.Explain Api
當(dāng)explain選項(xiàng)加到某一文檔上時(shí)辩诞,它會(huì)告訴你為何這個(gè)文檔會(huì)被匹配树灶,以及一個(gè)文檔為何沒有被匹配锅劝。