關(guān)于數(shù)據(jù)的高級(jí)搜索,你需要知道這些
編輯導(dǎo)讀:進(jìn)入數(shù)據(jù)時(shí)代,面對(duì)海量的數(shù)據(jù),想要找到一個(gè)精準(zhǔn)的目標(biāo)數(shù)據(jù)就必須要進(jìn)行高級(jí)檢索。通過更多維度來描述目標(biāo)數(shù)據(jù),從而提高目標(biāo)數(shù)據(jù)的精準(zhǔn)度。本文作者圍繞數(shù)據(jù)的高級(jí)檢索,發(fā)表了自己的看法,與你分享。
大數(shù)據(jù)時(shí)代,想要發(fā)揮數(shù)據(jù)的最大效用,找到目標(biāo)數(shù)據(jù)成為一個(gè)重要的課題。數(shù)據(jù)量變大,搜索條件越多,目標(biāo)數(shù)據(jù)的相似度就會(huì)越高,對(duì)目標(biāo)數(shù)據(jù)的描述越準(zhǔn)確。
例如,在100萬條數(shù)據(jù)里中找到一個(gè)特定的人。只通過姓名搜索,可能會(huì)有重名的人。如果加上性別維度進(jìn)行搜索,重名的就會(huì)減少。如果再加上出生日期,符合要求的數(shù)據(jù)就會(huì)更少。如果再加上籍貫、工作、興趣愛好,就會(huì)大大縮小目標(biāo)數(shù)據(jù)的范圍。從而保證目標(biāo)數(shù)據(jù)的唯一性,從而出現(xiàn)了高級(jí)檢索的需求。
高級(jí)搜索,是一種通過更多維度來描述目標(biāo)數(shù)據(jù),從而提高目標(biāo)數(shù)據(jù)的精準(zhǔn)度,最終找到目標(biāo)數(shù)據(jù)的搜索方式。
一、高級(jí)檢索
高級(jí)搜索是將多個(gè)單一搜索條件通過一定的邏輯關(guān)系,按照一定的運(yùn)算順序組合起來,形成一個(gè)復(fù)雜的篩選條件,并通過該復(fù)雜的篩選條件找到目標(biāo)數(shù)據(jù)的方法。由兩個(gè)部分組成,多個(gè)單一搜索條件、一定的邏輯關(guān)系。下面會(huì)對(duì)該定義中的內(nèi)容逐項(xiàng)介紹。
1. 多個(gè)搜索條件與單一搜索條件的對(duì)比關(guān)系
從篩選維度角度來看,多個(gè)搜索條件的篩選維度更多。
從用戶的操作成本來看,用戶需要花費(fèi)原來N倍的時(shí)間來編輯篩選條件,并且需要思考多個(gè)篩選條件之間的邏輯關(guān)系和運(yùn)算順序,以此來提高召回?cái)?shù)據(jù)的精準(zhǔn)度。
從開發(fā)實(shí)現(xiàn)復(fù)雜度來看,單一搜索條件只需要從單表中查詢一次即可,多個(gè)搜索條件需要在多個(gè)表中查詢,另外將多個(gè)表中查詢得到的結(jié)果按照規(guī)則進(jìn)行組合,程序的復(fù)雜度上會(huì)增大。
從查詢次數(shù)角度來看,對(duì)于一條數(shù)據(jù)來說,單一條件查詢一次即可,而多個(gè)搜索條件需要N次查詢。
從服務(wù)器的計(jì)算壓力來看,在一條數(shù)據(jù)中,多個(gè)搜索條件與單一查詢條件相比耗時(shí)較長。當(dāng)數(shù)據(jù)量較小時(shí),服務(wù)器的計(jì)算壓力不會(huì)有所體現(xiàn)。當(dāng)數(shù)量增大時(shí),查詢次數(shù)就會(huì)增大,服務(wù)器的計(jì)算壓力也會(huì)增大。體現(xiàn)在費(fèi)用上,服務(wù)器的花費(fèi)就會(huì)更貴。
從召回結(jié)果角度來看,單一搜索條件因?yàn)閷?duì)目標(biāo)數(shù)據(jù)描述的維度過于單一,而滿足某一個(gè)維度件的數(shù)據(jù)可能會(huì)有很多,從而召回的結(jié)果就會(huì)很多。多個(gè)搜索條件從多個(gè)維度描述目標(biāo)數(shù)據(jù),同時(shí)滿足多個(gè)條件的數(shù)據(jù)則會(huì)大大降低,召回結(jié)果就會(huì)更少,結(jié)果會(huì)更加符合用戶的要求。但是很可能會(huì)因?yàn)樗阉鳁l件過于嚴(yán)苛,導(dǎo)致零召回。
2. 一定的邏輯關(guān)系
邏輯關(guān)系用于定義篩選條件召回結(jié)果的組合方式。對(duì)召回結(jié)果按照一定的邏輯關(guān)系進(jìn)行運(yùn)算,進(jìn)而得出用戶需要的目標(biāo)數(shù)據(jù)。
召回結(jié)果指的是,使用每個(gè)篩選條件去數(shù)據(jù)庫中查詢,查詢出來的結(jié)果。
對(duì)召回結(jié)果加入邏輯關(guān)系以后,一共有三種條件組合形式。
1)所有篩選結(jié)果取合集
指,所有篩選條件召回的數(shù)據(jù)結(jié)果,放在一起取合集來組成最終的召回結(jié)果。
合集所解決的問題:
- 當(dāng)用戶對(duì)搜索內(nèi)容不確定,不知道當(dāng)前的搜索條件能否召回?cái)?shù)據(jù),所以就希望通過對(duì)搜索結(jié)果取合集的方式來召回盡量多的數(shù)據(jù),從而提高召回目標(biāo)數(shù)據(jù)的概率。
- 當(dāng)篩選條件拼寫錯(cuò)誤或字段間有空格等原因?qū)е虏糠趾Y選條件輸入錯(cuò)誤,同時(shí)部分篩選條件輸入正確,在該場景下,通過合集仍然有召回目標(biāo)數(shù)據(jù)的概率。
因?yàn)楹霞褲M足每個(gè)條件的數(shù)據(jù)都召回,并將召回結(jié)果集合在一起組成召回?cái)?shù)據(jù),所以合集具有召回的數(shù)據(jù)量比較大的特點(diǎn)。當(dāng)召回的數(shù)據(jù)量過大時(shí),用戶從召回的結(jié)果中找到目標(biāo)數(shù)據(jù)花費(fèi)的時(shí)間成本較大。所以只有數(shù)據(jù)庫數(shù)據(jù)量較小時(shí),通過合集召回的數(shù)據(jù)才會(huì)相對(duì)比較少,用戶從小數(shù)據(jù)量的數(shù)據(jù)中找到目標(biāo)數(shù)據(jù)的成本是可接受的。
例如,從400位學(xué)生找到10位學(xué)生組成年級(jí)籃球隊(duì)。從愛好、身高兩個(gè)維度篩選。要求“愛好包含籃球”“身高大于等于180cm”。但是老師無法確定學(xué)生情況,于是放松篩選標(biāo)準(zhǔn),兩個(gè)條件滿足其中一個(gè)即可通過初篩。
2)所有篩選結(jié)果取交集
指,所有篩選條件召回的數(shù)據(jù)結(jié)果,放在一起取交集來組成最終的目標(biāo)數(shù)據(jù)。
交集所解決的問題是,篩選條件召回的數(shù)據(jù)過多,用戶通過二次檢索找到目標(biāo)數(shù)據(jù)的成本高。
交集需要將每個(gè)篩選條件所召回的結(jié)果取交集從而得到召回?cái)?shù)據(jù),因?yàn)槟繕?biāo)數(shù)據(jù)需要同時(shí)滿足各個(gè)篩選維度的篩選條件,所以具有召回?cái)?shù)據(jù)量小,精準(zhǔn)度高的特點(diǎn)。當(dāng)數(shù)據(jù)量較大時(shí),通過交集的方式提高召回?cái)?shù)據(jù)與目標(biāo)數(shù)據(jù)的匹配程度,同時(shí)由于召回的數(shù)據(jù)量較小,所以用戶二次搜索的成本可接受。
例如,從8000位學(xué)生找到最優(yōu)秀的10個(gè)人組成?;@球隊(duì)。從性別、身高、體重、愛好四個(gè)維度篩選,要求“性別為男、身高大于等于180、體重大于80kg、愛好包含籃球”。于是篩選條件間采用交集策略,必須同時(shí)滿足所有篩選條件。
3)自定義邏輯關(guān)系
指,用戶自己決定篩選條件之間的邏輯關(guān)系,來控制篩選條件的嚴(yán)格程度,最終使篩選條件召回的患者數(shù)量在一個(gè)合理的水平,讓用戶的二次搜索的成本是可接受的。
自定義邏輯關(guān)系解決的問題是,用戶無法自行控制篩選條件的嚴(yán)格程度,在該嚴(yán)格的地方嚴(yán)格,在該放寬的地方放寬,也就無法達(dá)到最佳的召回結(jié)果。
自定義邏輯關(guān)系的特點(diǎn)是用戶對(duì)篩選條件嚴(yán)格程度控制的自由度高。這種高自由度是建立在用戶對(duì)搜索內(nèi)容了解的基礎(chǔ)上,對(duì)于確定的搜索條件通過交集收縮嚴(yán)格程度,對(duì)于不確定的搜索條件通過合集的方式放松嚴(yán)格程度,將篩選條件嚴(yán)格程度的決策權(quán)交給用戶,從而達(dá)到最佳的召回結(jié)果。
例如,從8000位學(xué)生中找到最優(yōu)秀的10人組成?;@球隊(duì)。從性別、身高、體重、愛好四個(gè)維度篩選,要求“性別為男、身高大于等于180、體重大于80kg、愛好包含籃球”。但是不知道身高大于等于180cm的學(xué)生數(shù)量,在身高維度放寬篩選條件,“身高大于等于175cm 并且 彈跳高度大于15cm”也可以。
將邏輯關(guān)系的控制權(quán)交給用戶,由用戶根據(jù)自己的情況設(shè)定篩選條件之間的邏輯關(guān)系,選擇使用“或者”還是“并且”,自主控制篩選條件的嚴(yán)格程度。
二、總結(jié)
根據(jù)數(shù)據(jù)量的大小,以及用戶對(duì)目標(biāo)數(shù)據(jù)的了解程度,用戶可以根據(jù)自己需要選擇不同的搜索方式。
當(dāng)數(shù)據(jù)量比較小的時(shí)候,用戶可以通過單一維度對(duì)目標(biāo)數(shù)據(jù)進(jìn)行檢索,或者增加并集策略。
當(dāng)數(shù)據(jù)量比較大的時(shí)候,用戶可以通過多個(gè)維度對(duì)目標(biāo)數(shù)據(jù)進(jìn)行檢索和交集策略。
當(dāng)用戶對(duì)目標(biāo)數(shù)據(jù)比較確定的時(shí)候,可以使用自定義邏輯關(guān)系的方式。
本文由 @申bobo 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自?Unsplash,基于 CC0 協(xié)議
當(dāng)用戶對(duì)目標(biāo)數(shù)據(jù)比較確定的時(shí)候,可以使用自定義邏輯關(guān)系,這個(gè)會(huì)存在系統(tǒng)默認(rèn)的邏輯關(guān)系嗎?