成員詢問模塊在此預先過濾器中扮演雜湊陣列(hash array)的角色,成員詢 問模塊中的的子字串並非直接存入成員詢問模塊中,而是將子字串先經過雜湊函 數(hash function)處理,得到一個雜湊值(hash value),此雜湊值視為一個位 址,並將位址指向的內容設定為 1,所以當成員詢問模塊的回饋值為 1 時,代表 搜尋視窗可能有關鍵字字串的部分內容存在,利用雜湊的儲存方式可降低儲存空 間,但是當雜湊函數設計不夠精確時,例如多個關鍵字字串有相同的子字串時有 可能會指向相同的雜湊值而產生誤報。
2.3.2 最右位元偵測器(Rightmost Bit Detector)
得到成員詢問模塊之後,將成員詢問模塊與當前搜尋視窗後k個位元做運算
並將其結果命名為MQM,如圖2.11的例子m=6,k=3的情形下可以得到MQM1、MQM2、
MQM3 、 MQM4 , 此 四 個 位 元 當 作 與 搜 尋 方 塊 比 對 子 關 鍵 字 字 串 的 結 果 。 若 {MQM1,MQM2,MQM3,MQM4}={0010}如圖2.12所示,MQM3為1代表 {th3th4th5} 可能符合某關鍵字字串Pi的第三到第五字元,所以將搜尋視窗與可能的關鍵字字 串位置對齊即下個搜尋視窗為{th1th2th3th4th5th6}即移動一個位元。
圖 2.12 最右位元偵測器一
若{MQM1,MQM2,MQM3,MQM4}={1100}如圖2.13所示,MQM1為1代表{th3th4th5} 可能符合某關鍵字字串Pi的第一到第三字元,MQM2為1代表{th3th4th5}可能符合 某關鍵字字串Pj的第二到第四字元,目前有兩個位移的選擇,然而若移動較長的 距離後可能會有遺漏關鍵字字串未被搜尋到,所以將搜尋視窗位移選擇移動位元 數較少的,所以下個搜尋視窗為{th2th3th4th5th6th7}即移動兩個位元如圖2.13。
圖 2.13 最右位元偵測器二
若{MQM1,MQM2,MQM3,MQM4}={1001}如圖2.14所示,MQM1為1代表{th3th4th5}
可能符合某關鍵字字串Pi的第一到第三字元,MQM4為1代表{th3th4th5}可能符合 某關鍵字字串Pj的第四到第六字元,此時將{t }的位址儲存供驗證器驗證,除此h 之 外 因 MQM1={1} 為 了 不 遺 漏 可 能 的 關 鍵 字 字 串 所 以 將 搜 尋 視 窗 移 動 到 {th3th4th5th6th7th8}即移動三個位元。
圖 2.14 最右位元偵測器三
若{MQM1,MQM2,MQM3,MQM4}={0000}如圖2.15所示表示目前的搜尋視窗沒有 符合的關鍵字字串,所以移動搜尋視窗到{th4th5th6th7th8th9},移動了四個位 元而最大的移動距離為m-k+1=6-3+1=4。
圖 2.15 最右位元偵測器四
歸納來說,若搜尋視窗同時有多個選擇位移位元數,為了避免過大的位移造 成關鍵字字串搜尋的疏漏,所以以位移數以最少的位移為原則。若MQM1為1可位 移3個位元,MQM2為1可位移2個位元,MQM3為1可位移1個位元,若MQM4為1代表有 可疑字串發生,{MQM1,MQM2,MQM3,MQM4}為全零則位移4個位元。若要選擇最小位
移則{MQM1,MQM2,MQM3,MQM4}中存在多個1時,選擇最右邊的1作為位移選擇。
2.3.3 主位元組列(Master Bitmap)
主位元組列(Master Bitmap)如圖 2.16 所示,命 MB={mb1,mb2,mb3,mb4},
其內容為上一個運算周期的成員詢問模塊經過未移之後的值。其功用在於可以二 次確認經過位移後的搜尋方塊是否真存在關鍵字字串集,經過二次確認後可降低 搜尋關鍵字字串的錯誤率並增加視窗位移速度亦即增加關鍵字字串搜尋的速度。
假設存在一輸入文字字串,且搜尋視窗內容為{abcdef},若存在一關鍵字字 串{defccc},則在此視窗的成員詢問模塊 MQ={0110},所以依據節所述規則移動 搜尋視窗使得下一個搜尋視窗內容為{def???},若將上一運算週期的 MQ 做相同 的向右位移並使位移後的空缺捕 1 後存入 MB 暫存得到 MB={1011},假若目前的 搜尋視窗{def???}的 MQ={0100}若不考慮 MB,依據 MQ 值位移為 2 位元,但若加 入主位元組列後,因為 MB={1011},表示位移前視窗不存在符合第二到第四位元 的關鍵字字串,所以即便位移後的 MQ={0100},也只代表目前視窗為部分符合關 鍵字字串但是與關鍵字字串沒有完全符合,所以將 MQ 與 MB 作邏輯的 AND 得到 {0000}意即下一個位移值為 4 個位元。
圖 2.16 主位元組列
圖 2.17 為無主位元組列的視窗位移狀態,若此時 MQM={1010},則 MQ1、MQ3 子字串可能存在於搜尋視窗於是移動搜尋視窗 1 位元,位移後假設 MQM={0010}
則 MQ3、MQ4 子字串可能存在於搜尋視窗於是移動搜尋視窗 1 位元。圖 2.18 為有 主位元組列的視窗位移狀態,同上例 MQM={1010},位移搜尋視窗 1 位元並同時 產生 MB 即 MQM 向右位移後,再空缺上補 1 則得 MB={1101},位移後視窗的 MQM={0010},則 MQM MB={0000},所以第二次位移可移動四個位元。
th th+1 th+2 th+3 th+4 th+5