動(dòng)態(tài)索引示意圖:

在如上圖的動(dòng)態(tài)索引中,有三個(gè)關(guān)鍵的索引結(jié)構(gòu):倒排索引、臨時(shí)索引和已刪除文檔列表。
倒排索引:就是對(duì)初始文檔集合建立好的索引結(jié)構(gòu),一般單詞詞典存儲(chǔ)在內(nèi)存中,對(duì)應(yīng)的倒排列表存儲(chǔ)在磁盤文件中。
臨時(shí)索引:在內(nèi)存中實(shí)時(shí)建立的倒排索引,其結(jié)構(gòu)和倒排索引時(shí)一樣的。當(dāng)有新文檔進(jìn)入系統(tǒng)時(shí),實(shí)時(shí)解析文檔并將其追加進(jìn)這個(gè)臨時(shí)索引結(jié)構(gòu)中。
已刪除文檔列表:用來存儲(chǔ)已被刪除的文檔的相應(yīng)文檔ID,形成一個(gè)文檔ID列表。當(dāng)一篇文檔內(nèi)容被更改,可以認(rèn)為是舊文檔先被刪除,之后向系統(tǒng)內(nèi)增加一篇新的文檔。
實(shí)現(xiàn)過程
當(dāng)系統(tǒng)發(fā)現(xiàn)有新文檔進(jìn)入時(shí),立即將其加入臨時(shí)索引中。有文檔被刪除時(shí),則將其加入刪除文檔隊(duì)列。文檔被更改時(shí),則將舊文檔加入刪除隊(duì)列,解析更新后的文檔內(nèi)容,并將其加入臨時(shí)索引中。通過這種方式滿足實(shí)時(shí)性的要求。
如果用戶輸入查詢請(qǐng)求,則搜索引擎同時(shí)從倒排索引和臨時(shí)索引中讀取用戶查詢單詞的倒排列表,找到包含用戶查詢的文檔集合,并對(duì)兩個(gè)結(jié)果進(jìn)行合并,之后利用刪除文檔列表進(jìn)行過濾,將搜索結(jié)果中那些已經(jīng)被刪除的文檔從結(jié)果中過濾,形成最終的搜索結(jié)果,并返回給用戶。這樣就能夠?qū)崿F(xiàn)動(dòng)態(tài)環(huán)境下的準(zhǔn)實(shí)時(shí)搜索功能。
問題:如果搜索的結(jié)果中包含已修改的文檔,是不是會(huì)因?yàn)槠湓趧h除文檔列表中而將其過濾掉。
參考文獻(xiàn):
[1] 張俊林. 這就是搜索引擎[M]. 電子工業(yè)出版社, 2012.