欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用結(jié)構(gòu)化數(shù)據(jù)儲存庫實現(xiàn)更快的全文搜索的制作方法

文檔序號:6351785閱讀:216來源:國知局
專利名稱:使用結(jié)構(gòu)化數(shù)據(jù)儲存庫實現(xiàn)更快的全文搜索的制作方法
技術(shù)領(lǐng)域
本申請總體涉及全文搜索和結(jié)構(gòu)化數(shù)據(jù)儲存庫(data store)。更具體地,其涉及使用結(jié)構(gòu)化數(shù)據(jù)儲存庫來實現(xiàn)更快的全文搜索。
背景技術(shù)
通常,文檔或數(shù)據(jù)存儲系統(tǒng)獨立解決搜索非結(jié)構(gòu)化數(shù)據(jù)和搜索結(jié)構(gòu)化數(shù)據(jù)的問題,根據(jù)優(yōu)先級是針對非結(jié)構(gòu)化搜索(如Google搜索引擎)還是結(jié)構(gòu)化搜索(如Oracle數(shù)據(jù)庫)來分別實現(xiàn)全文索引系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中的一個或兩者。實現(xiàn)兩者的系統(tǒng)可提供兩者的特征,但代價是遭受在準(zhǔn)備這些存儲庫(以及它們的關(guān)聯(lián)索引)中的每一個的過程中引發(fā)的性能懲罰以及分開的存儲開銷二者的懲罰。典型的權(quán)衡是僅實現(xiàn)一種,并且對于更適合于另一系統(tǒng)的查詢類型,遭受緩慢的查詢時間性能
發(fā)明內(nèi)容
利用傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫來另外地提供非結(jié)構(gòu)化全文搜索系統(tǒng)的許多益處,從而避免準(zhǔn)備兩個不同的索引/存儲庫中的數(shù)據(jù)的開銷以及伴隨的存儲開銷和插入性能懲罰。獨立于數(shù)據(jù)的任何規(guī)則分列式解釋的列被添加到傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫,從而創(chuàng)建“增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫”(ESDS)。添加的列使得能夠使用可以全速執(zhí)行的標(biāo)準(zhǔn)全文查詢句法/技術(shù)(與諸如SQL查詢中的“l(fā)ike”子句的標(biāo)準(zhǔn)數(shù)據(jù)庫管理系統(tǒng)(DBMS)設(shè)施相反)來搜索它們存儲的數(shù)據(jù)。換句話說,添加的列用作搜索索引。固定數(shù)量的“擴(kuò)展”列被添加到傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫,以形成增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)。將針對其實現(xiàn)更快的全文搜索的數(shù)據(jù)被解析為標(biāo)記(token)(例如,單詞)。每個標(biāo)記基于該標(biāo)記的哈希值被存儲在合適的擴(kuò)展列中。使用哈希方案來確定哈希值,所述哈希方案基于標(biāo)記的值而不是標(biāo)記的含義(其中,所述含義基于所述標(biāo)記在結(jié)構(gòu)化數(shù)據(jù)儲存庫中通常將對應(yīng)的“列”或“字段”)來操作。這使得后續(xù)的搜索能夠被表達(dá)為全文查詢,而不會使得隨后的搜索退化為在單個blob (二進(jìn)制大對象)字段或在每一個列上的強(qiáng)力掃描。可使用任何哈希方案。不同的哈希方案將基于正被存儲的數(shù)據(jù)的統(tǒng)計分布而導(dǎo)致不同的性能水平(例如,不同的搜索速度)。在一個實施例中,哈希方案使用來自標(biāo)記本身(即,來自標(biāo)記的值)的字符作為哈希值。在另一實施例中,基于標(biāo)記的長度(即,字符的數(shù)量)確定標(biāo)記的哈希值。在又一實施例中,標(biāo)記的長度屬性與另一屬性(例如,來自標(biāo)記的字符)相結(jié)合來確定哈希值。當(dāng)用戶查詢增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)時,他可使用標(biāo)準(zhǔn)全文查詢句法。例如,用戶可輸入“fox (狐貍)”作為查詢?;谡褂玫墓7桨笇⒉樵儭癴ox”翻譯為標(biāo)準(zhǔn)數(shù)據(jù)庫查詢句法(例如,結(jié)構(gòu)化查詢語言或“SQL”)。例如,如果哈希方案使用標(biāo)記的第一個字符作為標(biāo)記的哈希值,則“fox”將被翻譯為針對“where field F= ‘fox’”的SQL或針對“where field F contains ‘fox’”的SQL。如果哈希方案使用標(biāo)記的第二個字符作為標(biāo)記的哈希值,則“fox”將被翻譯為針對“where field 0= ‘fox’”的SQL或針對“where fieldO contains ‘fox’” 的 SQL。擴(kuò)展字段可直接支持短語搜索。字符串被解析為標(biāo)記,以及每個單獨的標(biāo)記被存儲在擴(kuò)展字段中。除了這些“標(biāo)準(zhǔn)”標(biāo)記以外,另外的標(biāo)記也被存儲在擴(kuò)展字段中。例如,以字符串出現(xiàn)的每對標(biāo)記也按照短語順序被存儲在合適的擴(kuò)展字段中,以及從而可用于搜索。在一個實施例中,標(biāo)記對包括由特殊字符(例如,下劃線字符分開的第一標(biāo)記和第二標(biāo)記。所述_字符指示第一標(biāo)記和第二標(biāo)記按照該順序出現(xiàn)在字符串中并彼此相鄰。單獨的標(biāo)記和標(biāo)記對兩者可被存儲在擴(kuò)展字段中。擴(kuò)展字段還可通過存儲附加標(biāo)記來直接支持“begins with”和“ends with”搜索,所述附加標(biāo)記使用特殊字符來指示關(guān)于標(biāo)準(zhǔn)標(biāo)記的附加信息,諸如標(biāo)準(zhǔn)標(biāo)記是字符串中的第一個標(biāo)記還是字符串中的最后一個標(biāo)記。上述技術(shù)(例如,基于標(biāo)記的值和哈希方案將標(biāo)記存儲在擴(kuò)展字段中)可以與任何結(jié)構(gòu)化數(shù)據(jù)儲存庫一起使用。例如,所述技術(shù)可以與基于行的數(shù)據(jù)庫管理系統(tǒng)(DBMS)—起·使用。然而,所述技術(shù)特別適合于基于列的DBMS?;诹械腄BMS是有利的,因為所述技術(shù)將查詢縮窄到必須包含給定搜索項的特定列(擴(kuò)展字段)(即使最終用戶根本沒有指定列)。行的其他字段不需要被檢查(或者甚至不需要被加載)以確定結(jié)果。


圖I示出根據(jù)本發(fā)明的一個實施例的事件描述以及在增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫中可如何表示該事件描述的示例。圖2是根據(jù)本發(fā)明的一個實施例的使用增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫來實現(xiàn)更快的全文搜索的系統(tǒng)的框圖。圖3是根據(jù)本發(fā)明的一個實施例的用于將事件信息存儲在增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫中的方法的流程圖。圖4是根據(jù)本發(fā)明的一個實施例的用于對增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫中存儲的事件信息執(zhí)行全文搜索的方法的流程圖。
具體實施例方式在說明書中描述的特征和優(yōu)點不是全都包括的,并且特別地,鑒于附圖、說明書和權(quán)利要求書,許多另外的特征和優(yōu)點對于本領(lǐng)域的普通技術(shù)人員而言將是清楚的。在說明書中使用的語言主要是為了可讀性和指導(dǎo)的目的而選擇的,并且可能不被選擇用于描繪或限制公開的主題。附圖和以下描述僅通過例證的方式涉及本發(fā)明的實施例。這里公開的結(jié)構(gòu)和方法的可替換的實施例可在不脫離所要求保護(hù)的內(nèi)容的原理的情況下被采用?,F(xiàn)在將詳細(xì)參照若干實施例,其示例在附圖中被示出。在任何可行的地方,相似或相同的參考標(biāo)號可在附圖中被使用并可指示相似或相同的功能。所述附圖僅為了例證的目的而描繪公開的系統(tǒng)(或方法)的實施例。本領(lǐng)域技術(shù)人員將容易地從以下描述認(rèn)識到在此示出的結(jié)構(gòu)和方法的可替換的實施例可在不脫離在此描述的原理的情況下被采用。如在此所使用的,術(shù)語“結(jié)構(gòu)化數(shù)據(jù)”是指對其元素或原子具有限定的結(jié)構(gòu)的數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)的一個示例是被存儲在關(guān)系數(shù)據(jù)庫中的行。結(jié)構(gòu)化數(shù)據(jù)的另一個示例是電子表格的行,其中,特定列中的單元總是存儲特定類型的數(shù)據(jù)(例如,列A中的單元總是存儲地址,以及列B中的單元總是存儲社會安全號)。文本文件通常是非結(jié)構(gòu)化數(shù)據(jù),因為除了可通過查看單詞本身來推斷的內(nèi)容之外,文檔不指示關(guān)于任何給定單詞的意義的內(nèi)容。換句話說,不存在關(guān)于數(shù)據(jù)的元數(shù)據(jù),只存在數(shù)據(jù)本身。然而,如果添加了記號(諸如每個動詞之前的〈verb〉標(biāo)簽),則文檔會具有某一結(jié)構(gòu)。具有模式(schema)是強(qiáng)加結(jié)構(gòu)的另一方式。如在此所使用的,術(shù)語“結(jié)構(gòu)化數(shù)據(jù)儲存庫”是指具有列以及針對所述列的數(shù)據(jù)類型(即,模式)的數(shù)據(jù)儲存庫。存儲在結(jié)構(gòu)化數(shù)據(jù)儲存庫中的數(shù)據(jù)被一致組織到合適的列中。結(jié)構(gòu)化數(shù)據(jù)儲存庫的一個示例是關(guān)系數(shù)據(jù)庫。結(jié)構(gòu)化數(shù)據(jù)儲存庫的另一個示例是電子表格。在一個實施例中,利用傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫來另外地提供非結(jié)構(gòu)化全文搜索系統(tǒng)的許多益處,從而避免準(zhǔn)備兩個不同的索引/存儲庫中的數(shù)據(jù)的開銷以及伴隨的存儲開銷和插入性能懲罰。獨立于數(shù)據(jù)的任何規(guī)則分列式解釋的列被添加到傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫,從而創(chuàng)建“增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫”(ESDS)。添加的列使得能夠使用可以全速執(zhí)行的標(biāo)準(zhǔn)全文查詢句法/技術(shù)(與諸如SQL查詢中的“l(fā)ike”子句的標(biāo)準(zhǔn)數(shù)據(jù)庫管理系統(tǒng) (DBMS)設(shè)施相反)來搜索它們存儲的數(shù)據(jù)。換句話說,添加的列用作搜索索引。將針對其實現(xiàn)全文搜索的數(shù)據(jù)可以以各種方式被存儲。一種選擇是將所有的數(shù)據(jù)作為單個blob (二進(jìn)制大對象)存儲在一個添加的列中。該字段中的值然后可被搜索。然而,使用這種方法的全文搜索將是耗時的。另一種選擇是將數(shù)據(jù)解析成標(biāo)記(例如,單詞),并將每個標(biāo)記存儲在它自己的添加列中。這樣,數(shù)據(jù)將在若干個列之間被展開,而不是作為blob被存儲在單個列中。該方法的一個問題在于添加的列的數(shù)量將基于數(shù)據(jù)的內(nèi)容和/或格式(具體地,數(shù)據(jù)中的標(biāo)記的數(shù)量)而變化。此外,使用這種方法的全文搜索將是耗時的。在一個實施例中,固定數(shù)量的“擴(kuò)展”列被添加到傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫,以形成增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)。每個標(biāo)記基于該標(biāo)記的哈希值而被存儲在合適的擴(kuò)展列中。使用哈希方案來確定哈希值,所述哈希方案基于標(biāo)記的值而不是標(biāo)記的含義(其中,所述含義基于所述標(biāo)記在結(jié)構(gòu)化數(shù)據(jù)儲存庫中通常將對應(yīng)的“列”或“字段”)來操作。這使得后續(xù)的搜索能夠被表達(dá)為全文查詢,而不會使得隨后的搜索退化為在單個blob字段或在每一個列上的強(qiáng)力掃描。示例
考慮僅使用以下四個“基本”字段來存儲“事件”(全文用語中的“文檔”或DBMS用語中的“行”)的傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫時間戳字段、計數(shù)字段、事情描述(incidentdescription)字段和錯誤描述字段。為了將事件存儲在傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫中,從事件描述提取或者基于包含在事件描述內(nèi)的信息來確定時間戳值、計數(shù)值、事情描述值和錯誤描述值。所述時間戳值、計數(shù)值、事情描述值和錯誤描述值然后被分別存儲在傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫中的條目的時間戳字段、計數(shù)字段、事情描述字段和錯誤描述字段中。所述時間戳值、計數(shù)值、事情描述值和錯誤描述值然后可被訪問或被查詢。由于時間戳值、計數(shù)值、事情描述值和錯誤描述值被存儲,因此它們可經(jīng)受全文搜索。然而,由于不存在搜索索引,因此全文搜索將需要強(qiáng)力搜索?,F(xiàn)在,傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫被增強(qiáng)以支持對事件信息的更快的全文搜索。具體地,36個擴(kuò)展字段被添加到4個現(xiàn)有的基本字段(如上說明的時間戳、計數(shù)、事情描述和錯誤描述),從而創(chuàng)建增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)。因此,ESDS使用40個字段存儲事件4個基本字段和36個擴(kuò)展字段。所述基本字段基于數(shù)據(jù)的含義存儲結(jié)構(gòu)化數(shù)據(jù)。所述擴(kuò)展字段基于每個標(biāo)記的值存儲事件標(biāo)記。在示出的實施例中,針對字母表的每個字母包括一個擴(kuò)展字段(A至Z,總共26個字母表字段)并且針對每個數(shù)字包括一個擴(kuò)展字段(O至9,總共10個數(shù)字字段),總計36個擴(kuò)展字段。換句話說,使用40個字段來存儲事件時間戳、計數(shù)、事情描述、錯誤描述、A、B、…、Y、Z、0、1、…、8、9。圖I示出根據(jù)本發(fā)明的一個實施例的事件描述以及在增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫中可如何表示該事件描述的示例。在圖I中,該事件如下記載
3:40am :A quick brown fox jumped over the lazy dog 3 times (早上 3 :40 :—只快速的褐色狐貍?cè)翁^懶惰的狗)
為了將事件信息存儲在ESDS中,所述事件被解析為標(biāo)記。從事件描述中提取(或者基于包含在事件描述內(nèi)的信息來確定)“結(jié)構(gòu)化”數(shù)據(jù),并且將其存儲在基本字段中。事件信 息中期望被索引化(即,為了更快的全文搜索而被實現(xiàn))的部分被識別。該部分可以例如是存儲在基本字段中的值或者是整個事件描述。該部分的標(biāo)記被存儲在擴(kuò)展字段(搜索索引)中,以及因此能夠以更快的方式被全文搜索。注意,一個標(biāo)記可被存儲兩次一一次在基本字段中,以及一次在擴(kuò)展字段中。在示出的示例中,時間戳值(3:40am)、計數(shù)值(3)、事情描述值(A quick brownfox jumped over the lazy dog 3 times at 3:40am (一只快速的褐色狐涯在早上 3 :40三次跳過懶惰的狗))、以及錯誤描述值(unusual jumping activity at 3:40am(在3:40am的不正常的跳躍活動))從事件描述中被提取(或基于包含在事件描述內(nèi)的信息而被確定),并被分別存儲在時間戳基本字段、計數(shù)基本字段、事情描述基本字段以及錯誤描述基本字段中。假設(shè)僅期望使得事情描述值能夠進(jìn)行高速全文搜索。事情描述值被解析為13個標(biāo)記,即1) A ;2) quick ;3) brown ;4) fox ;5) jumped ;6) over ;7) the ;8) lazy ;9) dog ; 10)3 ;11) times ;12) at以及13) 3:40am。所述13個標(biāo)記中的每一個根據(jù)該標(biāo)記的哈希值被存儲在擴(kuò)展字段中。假設(shè)哈希方案選擇標(biāo)記的第一個字符作為該標(biāo)記的哈希值。所述標(biāo)記然后被存儲在合適的擴(kuò)展字段中。標(biāo)記I (“A”)將具有哈希值“A”并從而被存儲在“A”字段中,標(biāo)記2 (“quick”)將具有哈希值“Q”并從而被存儲在“Q”字段中,標(biāo)記3 (“brown”)將具有哈希值“B”并從而被存儲在“B”字段中,以此類推。圖I示出在增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫中可如何表示事件信息,其中,所述增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫使用上述40個字段(4個基本字段和36個擴(kuò)展字段)和第一字符哈希方案,并使得能夠按照更快的方式全文搜索事情描述值。注意,標(biāo)記I (“A”)和標(biāo)記2 (“quick”)均被存儲兩次——一次在基本字段(事情描述)中,以及一次在擴(kuò)展字段(分別是“A”和“Q”)中。另外,標(biāo)記I (“A”)和標(biāo)記12(“at”)具有相同的哈希值(“A”),以及因此都被存儲在相同的字段(“A”)中?,F(xiàn)在,假設(shè)期望實現(xiàn)事情描述值和錯誤描述值兩者的高速全文搜索。來自這些值的標(biāo)記被存儲在合適的擴(kuò)展字段中。注意,僅一組擴(kuò)展字段(例如,36個擴(kuò)展字段)對于存儲所述標(biāo)記是必要的,即使來自兩個不同的值(事情描述值和錯誤描述值)的標(biāo)記正被存儲。
例如,圖I示出事情描述值的標(biāo)記如何被存儲在擴(kuò)展字段中。如果還期望實現(xiàn)錯誤描述值的高速全文搜索,則所述值被解析為5個標(biāo)記(“unusual'“jumping”、"activity”、“at”和“3:40am”),并且那些標(biāo)記被存儲在擴(kuò)展字段中。“unusual ”標(biāo)記將具有哈希值“U”,以及因而被存儲在“U”擴(kuò)展字段中,以此類推。記得已實現(xiàn)了事情描述值的高速全文搜索。這使得“ at ”標(biāo)記(來自事情描述值內(nèi))被存儲在“A”擴(kuò)展字段中。錯誤描述值也包括標(biāo)記“at”。在一個實施例中,擴(kuò)展字段指示事件中的標(biāo)記作為整體的(例如,在被實現(xiàn)高速搜索的事件的所有部分中)存在或不存在。在該實施例中,每個事件將僅存儲一次標(biāo)記,即使該標(biāo)記在該事件中出現(xiàn)多次。因此,在該實施例中,即使標(biāo)記“at”在事情描述值和錯誤描述值兩者中均出現(xiàn),但標(biāo)記“at”將僅被存儲一次。
注意,以下結(jié)合短語搜索討論的標(biāo)記對可包括已被存儲的標(biāo)記。例如,除了標(biāo)記“at”,(來自事情描述值的)標(biāo)記對“times_at”和“at_3:40am”可被存儲。作為另一示例,(來自錯誤描述值的)標(biāo)記對“activity_at”也可被存儲。在上述實施例中,(來自錯誤描述值的)標(biāo)記對“at_3:40am”將不被存儲,因為它已經(jīng)結(jié)合(來自事情描述值的)標(biāo)記對“at_3:40am” 被存儲。搜索查詢可指示標(biāo)記必須出現(xiàn)在特定基本字段內(nèi)。在這種情況下,在任意位置(例如,在已實現(xiàn)高速全文搜索的事件的任意基本字段中)包含該標(biāo)記的事件可基于所述標(biāo)記在所述事件內(nèi)的精確位置而經(jīng)受進(jìn)一步的處理。例如,如果事件在特定基本字段內(nèi)不包含所述標(biāo)記,則可從一組搜索結(jié)果中排除所述事件。羞統(tǒng)
圖2是根據(jù)本發(fā)明的一個實施例的使用增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫來實現(xiàn)更快的全文搜索的系統(tǒng)的框圖。系統(tǒng)200能夠?qū)Υ鎯υ谠鰪?qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)中的事件信息(具體地,對存儲在ESDS的擴(kuò)展字段中的事件信息)執(zhí)行更快的全文搜索。示出的系統(tǒng)200包括全文搜索系統(tǒng)205、存儲裝置210和數(shù)據(jù)儲存庫管理系統(tǒng)215。在一個實施例中,全文搜索系統(tǒng)205和數(shù)據(jù)儲存庫管理系統(tǒng)215(及它們的組件模塊)是存儲在一個或多個計算機(jī)可讀存儲介質(zhì)上并在一個或多個處理器上執(zhí)行的一個或多個計算機(jī)程序模塊。存儲裝置210 (及其內(nèi)容)被存儲在一個或多個計算機(jī)可讀存儲介質(zhì)上。另外,全文搜索系統(tǒng)205和數(shù)據(jù)儲存庫管理系統(tǒng)215 (及它們的組件模塊)以及存儲裝置210至少在數(shù)據(jù)可在它們之間傳送的程度上被通信地彼此耦合。全文搜索系統(tǒng)205包括多個模塊,諸如控制模塊220、解析模塊225、映射模塊230、哈希模塊235以及查詢翻譯模塊240??刂颇K220控制全文搜索系統(tǒng)205(即,它的各個模塊)的操作,使得全文搜索系統(tǒng)205可將事件信息存儲在增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS)245中,并對存儲在ESDS的擴(kuò)展字段中的事件信息執(zhí)行更快的全文搜索。以下將參照圖3(存儲)和圖4 (搜索)來討論控制模塊220的操作。解析模塊225基于定界符將字符串解析成標(biāo)記。定界符通常被劃分為兩組“空白空間(white space)”定界符和“特殊字符”定界符??瞻卓臻g定界符包括例如空格、制表符、換行以及回車。特殊字符定界符包括例如大多數(shù)剩余的非字母數(shù)字字符,諸如逗號(“,”)或句號(“.”)。在一個實施例中,定界符是可配置的。例如,空白空間定界符和/或特殊字符定界符可基于正被解析的數(shù)據(jù)(例如,數(shù)據(jù)的句法)而被配置。
在一個實施例中,解析模塊225基于一組定界符和修剪策略將字符串分割為標(biāo)記(稱為“標(biāo)記化(tokenization)”)。在一個實施例中,默認(rèn)定界符組是{ ‘ ’、‘\n’、‘\r’、‘,,、‘\t,、‘=,、‘I,、O,},并且默認(rèn)修剪策略是忽視在標(biāo)記的開始或結(jié)束處出現(xiàn)的特殊字符(除{‘+’}以外)。定界符可以是靜態(tài)的或上下文敏感的。上下文敏感的定界符的示例是僅在它們跟在看起來像IP地址的內(nèi)容之后時才被視為定界符的{ ‘ ’、‘/’ }。這是為了處理事件中常見的IP地址和端口號的組合,諸如10. 10. 10. 10/80或10. 10. 10. 10:80。如果這些字符被包括在默認(rèn)定界符組中,則文件名和URL將被分割成多個標(biāo)記,這可能不準(zhǔn)確。未修剪的非定界符字符的任意鄰接字符串被視為是標(biāo)記。在一個實施例中,為了性能的原因,解析模塊225使用有限狀態(tài)機(jī)(而不是正則表達(dá)式)。通常,任何解析器/標(biāo)記化器(tokenizer)可被用于基于一組定界符和修剪策略來將字符串分割成標(biāo)記。公共可用的標(biāo)記化器的一個示例是作為Java標(biāo)準(zhǔn)庫的一部分的java. util. StringTokenizer0 StringTokenizer使用一個或多個字符(例如,空白空間字符)的固定定界符字符串來將字符串分割成多個字符串。這種方法的問題是使用相同的定界符而不管上下文如何的不靈活性。另一方法是使用已知正則表達(dá)式模式的列表并將字符 串的匹配部分識別為標(biāo)記。這種方法的問題是性能。映射模塊230從事件描述(例如,字符串)中提取結(jié)構(gòu)化數(shù)據(jù),并將所述數(shù)據(jù)存儲在(一個或多個)合適的基本字段中。所述映射模塊與現(xiàn)有的從事件描述中提取特定值并使用提取的值來按照規(guī)格化模式填充字段的技術(shù)相似。存儲在基本字段中的值可以具有各種數(shù)據(jù)類型,諸如時間戳、數(shù)字、網(wǎng)際協(xié)議(IP)地址或字符串。注意,某些數(shù)據(jù)可能不被存儲在任何基本字段中。哈希模塊235確定用于特定標(biāo)記的哈希值。該哈希值指示增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫(ESDS) 245中的哪個擴(kuò)展字段應(yīng)該被用于存儲該特定標(biāo)記。根據(jù)哈希方案來確定哈希值。所述哈希方案基于標(biāo)記的值而不是標(biāo)記的含義(其中,所述含義基于所述標(biāo)記在結(jié)構(gòu)化數(shù)據(jù)儲存庫中通常將對應(yīng)的“列”或“字段”)來進(jìn)行操作。該標(biāo)記的值作為字符串被存儲在合適的擴(kuò)展字段中。這種哈希方案的一個示例是使用來自標(biāo)記(S卩,來自標(biāo)記的值)的字符作為哈希值。如果所述字符是字母,則所述標(biāo)記可具有26個哈希值(字母表A至Z的每個字母一個)中的任意一個。所述標(biāo)記然后將被存儲在26個擴(kuò)展字段(字母表A至Z的每個字母一個)之一中。如果所述字符是數(shù)字,則所述標(biāo)記可具有10個哈希值(O至9的每個數(shù)字一個)中的任意一個。所述標(biāo)記然后將被存儲在10個擴(kuò)展字段(O至9的每個數(shù)字一個)之一中。如果所述字符可以是字母或數(shù)字,則所述標(biāo)記可具有36個哈希值(字母表A至Z的每個字母一個,以及O至9的每個數(shù)字一個)中的任意一個。所述標(biāo)記然后將被存儲在36個擴(kuò)展字段(字母表A至Z的每個字母一個,以及O至9的每個數(shù)字一個)之一中。如果所述字符可以是除字母或數(shù)字以外的某種字符(即,非字母數(shù)字),則可使用附加的包羅萬象(catchall)哈希值(“ Other (其他),,)和擴(kuò)展字段(“ Other,,)。被用作哈希值的字符可以是例如標(biāo)記的第一個字符、標(biāo)記的第二個字符或標(biāo)記的最后一個字符。如果哈希方案使用第二個字符并且所述標(biāo)記僅是字符,則特定字符被使用(例如,空格“ ”字符)。
除了如已描述的使用來自標(biāo)記本身的字符的哈希方案以外,存在可使用的另外的方法和改進(jìn)。例如,可基于標(biāo)記的長度(即,字符的數(shù)量)來確定哈希值(并且因而確定合適的擴(kuò)展字段)。例如,考慮使用標(biāo)記的長度作為該標(biāo)記的哈希值的哈希方案。來自以下字符串A quick brown fox jumped over the lazy dog 3 times at 3:40am 的標(biāo)記將具有以
下哈希值__
權(quán)利要求
1.一種用于將信息存儲在結(jié)構(gòu)化數(shù)據(jù)儲存庫內(nèi)的條目中的計算機(jī)實現(xiàn)方法,其中,所述條目包括一個或多個基本字段以及一個或多個擴(kuò)展字段,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進(jìn)行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標(biāo)記;以及 對于所述多個標(biāo)記中的每個標(biāo)記 基于哈希方案確定所述標(biāo)記的哈希值;以及 將所述標(biāo)記存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中。
2.如權(quán)利要求I所述的方法,其中,字符串的所識別的部分包括整個字符串。
3.如權(quán)利要求I所述的方法,其中,字符串的所識別的部分是存儲在基本字段中的值。
4.如權(quán)利要求I所述的方法,其中,標(biāo)記的哈希值包括字符。
5.如權(quán)利要求I所述的方法,其中,哈希方案包括使用標(biāo)記的第一個字符作為該標(biāo)記的哈希值。
6.如權(quán)利要求I所述的方法,其中,標(biāo)記的哈希值包括數(shù)字。
7.如權(quán)利要求I所述的方法,其中,哈希方案包括使用標(biāo)記內(nèi)的字符的數(shù)量作為該標(biāo)記的哈希值。
8.如權(quán)利要求I所述的方法,其中,哈希方案包括使用標(biāo)記的第一個字符以及標(biāo)記內(nèi)的字符的數(shù)量作為該標(biāo)記的哈希值。
9.如權(quán)利要求I所述的方法,還包括 對于所述多個標(biāo)記中的每個標(biāo)記 產(chǎn)生標(biāo)記對,所述標(biāo)記對包括所述標(biāo)記以及在字符串的所識別的部分內(nèi)緊接在所述標(biāo)記之后的第二標(biāo)記; 基于哈希方案確定所述標(biāo)記對的哈希值;以及 將所述標(biāo)記對存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中。
10.如權(quán)利要求I所述的方法,還包括 對于所述多個標(biāo)記中的每個標(biāo)記 如果所述標(biāo)記是字符串的所識別的部分內(nèi)的第一個標(biāo)記,則 產(chǎn)生包括特殊字符和所述標(biāo)記的開始標(biāo)記,其中,所述特殊字符指示所述標(biāo)記是字符串的所識別的部分內(nèi)的第一個標(biāo)記; 基于哈希方案確定所述開始標(biāo)記的哈希值;以及 將所述開始標(biāo)記存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中。
11.如權(quán)利要求I所述的方法,還包括 對于所述多個標(biāo)記中的每個標(biāo)記 如果所述標(biāo)記是字符串的所識別的部分內(nèi)的最后標(biāo)記,則 產(chǎn)生包括所述標(biāo)記和特殊字符的結(jié)束標(biāo)記,其中,所述特殊字符指示所述標(biāo)記是字符串的所識別的部分內(nèi)的最后標(biāo)記;基于哈希方案確定所述結(jié)束標(biāo)記的哈希值;以及 將所述結(jié)束標(biāo)記存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中。
12.一種用于將信息存儲在結(jié)構(gòu)化數(shù)據(jù)儲存庫內(nèi)的條目中的計算機(jī)程序產(chǎn)品,其中,所述條目包括一個或多個基本字段以及一個或多個擴(kuò)展字段,以及其中所述計算機(jī)程序產(chǎn)品被存儲在包括指令的計算機(jī)可讀介質(zhì)上,當(dāng)被加載到存儲器中時,所述指令使處理器執(zhí)行方法,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進(jìn)行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標(biāo)記;以及 對于所述多個標(biāo)記中的每個標(biāo)記 基于哈希方案確定所述標(biāo)記的哈希值;以及 將所述標(biāo)記存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中。
13.一種用于將信息存儲在結(jié)構(gòu)化數(shù)據(jù)儲存庫內(nèi)的條目中的系統(tǒng),其中,所述條目包括一個或多個基本字段以及一個或多個擴(kuò)展字段,所述系統(tǒng)包括 包括指令的計算機(jī)可讀介質(zhì),當(dāng)被加載到存儲器中時,所述指令使處理器執(zhí)行方法,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進(jìn)行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標(biāo)記;以及 對于所述多個標(biāo)記中的每個標(biāo)記 基于哈希方案確定所述標(biāo)記的哈希值;以及 將所述標(biāo)記存儲在與確定的哈希值對應(yīng)的擴(kuò)展字段中;以及 用于執(zhí)行所述方法的處理器。
全文摘要
利用傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫來提供非結(jié)構(gòu)化全文搜索系統(tǒng)的益處。固定數(shù)量的“擴(kuò)展”列被添加到傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)儲存庫,以形成“增強(qiáng)型結(jié)構(gòu)化數(shù)據(jù)儲存庫”(ESDS)。擴(kuò)展列獨立于數(shù)據(jù)的任何規(guī)則分列式解釋以及使得能夠使用可以更快執(zhí)行的標(biāo)準(zhǔn)全文查詢句法/技術(shù)(與SQL句法相反)來搜索它們存儲的數(shù)據(jù)。換句話說,添加的列用作搜索索引?;跇?biāo)記的哈希值將該標(biāo)記存儲在合適的擴(kuò)展列中。使用哈希方案來確定哈希值,所述哈希方案基于標(biāo)記的值而不是標(biāo)記的含義來操作。這使得后續(xù)的搜索能夠被表達(dá)為全文查詢,而不會使得隨后的搜索退化為強(qiáng)力掃描。
文檔編號G06F7/00GK102834802SQ201080060959
公開日2012年12月19日 申請日期2010年11月9日 優(yōu)先權(quán)日2009年11月9日
發(fā)明者H.S.耶曼澤 申請人:Arc景象有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永济市| 曲松县| 密云县| 泰州市| 延安市| 定日县| 藁城市| 无极县| 玛曲县| 德阳市| 韩城市| SHOW| 米林县| 平山县| 博客| 滕州市| 高要市| 富顺县| 个旧市| 吉木乃县| 株洲市| 和林格尔县| 天祝| 青海省| 治县。| 榆林市| 乌拉特前旗| 浠水县| 淮阳县| 永福县| 两当县| 绥滨县| 页游| 五华县| 信宜市| 西盟| 乌海市| 柏乡县| 霍州市| 平定县| 兴安盟|