志文件,并以追加的方式寫(xiě)入。
[0116]實(shí)施例七
[0117]參考圖7,圖7是本發(fā)明數(shù)據(jù)搜索的裝置的功能模塊示意圖。
[0118]在實(shí)施例七中,所述數(shù)據(jù)搜索的裝置包括:
[0119]采集模塊、數(shù)據(jù)接收模塊、索引更新模塊、搜索合并模塊、索引合并模塊、存儲(chǔ)模塊。
[0120]如圖7所示,采集模塊用于采集數(shù)據(jù),對(duì)采集的數(shù)據(jù)類(lèi)型進(jìn)行判別,采集數(shù)據(jù)類(lèi)型為搜索數(shù)據(jù),則將數(shù)據(jù)提交給搜索合并模塊;若采集數(shù)據(jù)類(lèi)型為索引數(shù)據(jù),則將數(shù)據(jù)提交給索引更新模塊。
[0121]搜索合并模塊用于對(duì)搜索請(qǐng)求數(shù)據(jù)進(jìn)行邏輯處理(與、或、非等),對(duì)搜索數(shù)據(jù)進(jìn)行分詞處理,獲取搜索關(guān)鍵詞組合,根據(jù)關(guān)鍵詞組合請(qǐng)求索引合并模塊,索引合并模塊將搜索結(jié)構(gòu)返回給搜索合并模塊,搜索合并模塊將結(jié)果進(jìn)行一定的合并。
[0122]數(shù)據(jù)接收模塊用于將采集模塊傳過(guò)來(lái)索引數(shù)據(jù)由數(shù)據(jù)接收模塊采用寫(xiě)日志的方式寫(xiě)入專(zhuān)屬內(nèi)存區(qū),數(shù)據(jù)接收模塊按照一定的機(jī)制(時(shí)間間隔、日志大小)將數(shù)據(jù)刷入存儲(chǔ)模塊,存儲(chǔ)模塊中存儲(chǔ)著對(duì)應(yīng)的日志文件,并且以追加的方式寫(xiě)入。
[0123]索引更新模塊用于從數(shù)據(jù)接收模塊接收已存儲(chǔ)的需索引數(shù)據(jù),將索引數(shù)據(jù)建立索弓丨,存儲(chǔ)到內(nèi)存中的索引A區(qū),當(dāng)內(nèi)存索引A區(qū)的大小達(dá)到閾值,則將內(nèi)存索引A區(qū)的數(shù)據(jù)拷貝到索引B區(qū),并將內(nèi)存索引B區(qū)的索引刷入存儲(chǔ)空間中,以子索引形式切區(qū)分于全量索引存儲(chǔ)。
[0124]索引合并模塊用于當(dāng)合并索引的數(shù)量增加時(shí),將合并索引與全量索引進(jìn)行合并,生成相關(guān)的合并任務(wù)。將合并任務(wù)提交給分布式計(jì)算集群進(jìn)行合并索引和全量索引的合并,合并后的新的全量索引存儲(chǔ)到存儲(chǔ)模塊中,監(jiān)控現(xiàn)在對(duì)于舊的全量索引的搜索任務(wù),將新的搜索任務(wù)連接到新的全量索引,等待舊的全量索引上的搜索任務(wù)的完成,新的全量索引平滑切換舊的全量索引,當(dāng)全量索引切換完成,刪除舊的全量索引,新的全量索引開(kāi)始全面對(duì)外提供搜索任務(wù)。
[0125]其中,實(shí)時(shí)搜索的搜索裝置從多個(gè)方面保證了搜索的性能,滿足應(yīng)用的接近實(shí)時(shí)的搜索效果。
[0126]數(shù)據(jù)接收模塊可以先將大量索引數(shù)據(jù)進(jìn)行緩存,然后由索引更行模塊進(jìn)行消費(fèi),這樣在實(shí)時(shí)數(shù)據(jù)量過(guò)大的情況下緩解了索引更新模塊的壓力,從而提高了整個(gè)裝置的可用性。
[0127]索引更新模塊中通過(guò)內(nèi)存索引A區(qū)和內(nèi)存索引B區(qū)的方法避免了索引寫(xiě)入存儲(chǔ)模塊過(guò)于頻繁,內(nèi)存索引A區(qū)負(fù)責(zé)接收實(shí)時(shí)產(chǎn)生的索引,索引B區(qū)則負(fù)責(zé)將索引寫(xiě)入存儲(chǔ)模塊,只有達(dá)到一定的閾值,才會(huì)將內(nèi)存索引A區(qū)的數(shù)據(jù)拷貝至索引B區(qū)。這種方法避免了磁盤(pán)1的擁堵問(wèn)題,避免搜索任務(wù)的性能極速下降的問(wèn)題。
[0128]索引合并模塊則通過(guò)采用分布式計(jì)算框架(hadoop)進(jìn)行合并索引和全量索引的合并任務(wù),由于合并任務(wù)需要達(dá)到一定的時(shí)間才會(huì)運(yùn)行,從而很好的減少了索引切換的影響,合并后索引碎片減少,提尚了搜索性能。
[0129]搜索合并模塊會(huì)將搜索請(qǐng)求會(huì)對(duì)全量索引和合并索引同時(shí)進(jìn)行搜索,從而保證了搜索的實(shí)時(shí)性。
[0130]以上結(jié)合具體實(shí)施例描述了本發(fā)明實(shí)施例的技術(shù)原理。這些描述只是為了解釋本發(fā)明實(shí)施例的原理,而不能以任何方式解釋為對(duì)本發(fā)明實(shí)施例保護(hù)范圍的限制?;诖颂幍慕忉?zhuān)绢I(lǐng)域的技術(shù)人員不需要付出創(chuàng)造性的勞動(dòng)即可聯(lián)想到本發(fā)明實(shí)施例的其它【具體實(shí)施方式】,這些方式都將落入本發(fā)明實(shí)施例的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)搜索的方法,其特征在于,所述方法包括: 建立采集的索引數(shù)據(jù)的刷入索引; 根據(jù)預(yù)設(shè)的第一算法合并所述刷入索引,生成合并索引; 將所述合并索引與當(dāng)前的全量索引根據(jù)預(yù)設(shè)的第二算法進(jìn)行合并,生成新的全量索弓I,所述新的全量索引用于用戶進(jìn)行數(shù)據(jù)搜索。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)的第一算法合并所述刷入索引,生成合并索引,包括: 將所述刷入索引存儲(chǔ)到內(nèi)存的索引A區(qū); 當(dāng)存入到所述索引A區(qū)的刷入索引的大小達(dá)到預(yù)設(shè)的第一閾值時(shí),則將所述索引A區(qū)的刷入索引的數(shù)據(jù)復(fù)制到內(nèi)存的索引B區(qū); 當(dāng)存入到所述索引B區(qū)的刷入索引的大小達(dá)到預(yù)設(shè)的第二閾值時(shí),則將所述索引B區(qū)的刷入索引的數(shù)據(jù)寫(xiě)入存儲(chǔ)模塊中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述合并索引與當(dāng)前的全量索引根據(jù)預(yù)設(shè)的第二算法進(jìn)行合并,生成新的全量索引,包括: 將所述合并索引與當(dāng)前的全量索引進(jìn)行合并,生成新的全量索引和新的合并任務(wù),建立所述新的全量索引和所述新的合并任務(wù)的連接; 將所述新的全量索引存儲(chǔ)到存儲(chǔ)模塊中,監(jiān)控是否完成所述當(dāng)前全量索引對(duì)應(yīng)的搜索任務(wù); 在監(jiān)控到已完成所述當(dāng)前全量對(duì)應(yīng)的搜索任務(wù)后,刪除所述當(dāng)前全量索引。
4.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的方法,其特征在于,所述方法在建立采集的索引數(shù)據(jù)的刷入索引之前,還包括: 對(duì)采集的數(shù)據(jù)的類(lèi)型進(jìn)行判別; 若采集的數(shù)據(jù)的類(lèi)型為搜索數(shù)據(jù)時(shí),則獲取所述搜索數(shù)據(jù)中的關(guān)鍵詞組合,搜索所述關(guān)鍵詞組合對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,并將所述數(shù)據(jù)內(nèi)容進(jìn)行合并后發(fā)送給用戶; 若采集的數(shù)據(jù)的類(lèi)型為索引數(shù)據(jù)時(shí),則執(zhí)行建立采集的索引數(shù)據(jù)的刷入索引的步驟。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 將采集的索引數(shù)據(jù)以寫(xiě)日志的方式寫(xiě)入預(yù)設(shè)的內(nèi)存區(qū),將所述日志寫(xiě)入存儲(chǔ)模塊。
6.一種數(shù)據(jù)搜索的裝置,其特征在于,所述裝置包括: 建立單元,用于建立采集的索引數(shù)據(jù)的刷入索引; 第一生成單元,用于根據(jù)預(yù)設(shè)的第一算法合并所述刷入索引,生成合并索引; 第二生成單元,用于將所述合并索引與當(dāng)前的全量索引根據(jù)預(yù)設(shè)的第二算法進(jìn)行合并,生成新的全量索引,所述新的全量索引用于用戶進(jìn)行數(shù)據(jù)搜索。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一生成單元,用于: 將所述刷入索引存儲(chǔ)到內(nèi)存的索引A區(qū); 當(dāng)存入到所述索引A區(qū)的刷入索引的大小達(dá)到預(yù)設(shè)的第一閾值時(shí),則將所述索引A區(qū)的刷入索引的數(shù)據(jù)復(fù)制到內(nèi)存的索引B區(qū); 當(dāng)存入到所述索引B區(qū)的刷入索引的大小達(dá)到預(yù)設(shè)的第二閾值時(shí),則將所述索引B區(qū)的刷入索引的數(shù)據(jù)寫(xiě)入存儲(chǔ)模塊中。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二生成單元,用于: 將所述合并索引與當(dāng)前的全量索引進(jìn)行合并,生成新的全量索引和新的合并任務(wù),建立所述新的全量索引和所述新的合并任務(wù)的連接; 將所述新的全量索引存儲(chǔ)到存儲(chǔ)模塊中,監(jiān)控是否完成所述當(dāng)前全量索引對(duì)應(yīng)的搜索任務(wù); 在監(jiān)控到已完成所述當(dāng)前全量對(duì)應(yīng)的搜索任務(wù)后,刪除所述當(dāng)前全量索引。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 判別單元,用于對(duì)采集的數(shù)據(jù)的類(lèi)型進(jìn)行判別; 搜索單元,用于若采集的數(shù)據(jù)的類(lèi)型為搜索數(shù)據(jù)時(shí),則獲取所述搜索數(shù)據(jù)中的關(guān)鍵詞組合,搜索所述關(guān)鍵詞組合對(duì)應(yīng)的數(shù)據(jù)內(nèi)容,并將所述數(shù)據(jù)內(nèi)容進(jìn)行合并后發(fā)送給用戶; 建立單元,用于若采集的數(shù)據(jù)的類(lèi)型為索引數(shù)據(jù)時(shí),則執(zhí)行建立采集的索引數(shù)據(jù)的刷入索引。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括: 寫(xiě)入單元,用于將采集的索引數(shù)據(jù)以寫(xiě)日志的方式寫(xiě)入預(yù)設(shè)的內(nèi)存區(qū),將所述日志寫(xiě)入存儲(chǔ)模塊。
【專(zhuān)利摘要】本發(fā)明實(shí)施例公開(kāi)了一種數(shù)據(jù)搜索的方法及裝置,通過(guò)建立采集的索引數(shù)據(jù)的刷入索引;根據(jù)預(yù)設(shè)的第一算法合并所述刷入索引,生成合并索引;將所述合并索引與當(dāng)前的全量索引根據(jù)預(yù)設(shè)的第二算法進(jìn)行合并,生成新的全量索引,所述新的全量索引用于用戶進(jìn)行數(shù)據(jù)搜索,從而實(shí)現(xiàn)對(duì)大量的數(shù)據(jù)進(jìn)行實(shí)時(shí)索引時(shí),會(huì)造成大量的索引文件碎片,通過(guò)分布式計(jì)算對(duì)索引碎片與全量索引進(jìn)行合并,降低了索引碎片對(duì)搜索性能的影響。
【IPC分類(lèi)】G06F17-30
【公開(kāi)號(hào)】CN104820693
【申請(qǐng)?zhí)枴緾N201510208340
【發(fā)明人】陳紅
【申請(qǐng)人】廣東小天才科技有限公司
【公開(kāi)日】2015年8月5日
【申請(qǐng)日】2015年4月28日