專利名稱:使用結構化數據儲存庫實現更快的全文搜索的制作方法
技術領域:
本申請總體涉及全文搜索和結構化數據儲存庫(data store)。更具體地,其涉及使用結構化數據儲存庫來實現更快的全文搜索。
背景技術:
通常,文檔或數據存儲系統獨立解決搜索非結構化數據和搜索結構化數據的問題,根據優先級是針對非結構化搜索(如Google搜索引擎)還是結構化搜索(如Oracle數據庫)來分別實現全文索引系統或數據庫系統中的一個或兩者。實現兩者的系統可提供兩者的特征,但代價是遭受在準備這些存儲庫(以及它們的關聯索引)中的每一個的過程中引發的性能懲罰以及分開的存儲開銷二者的懲罰。典型的權衡是僅實現一種,并且對于更適合于另一系統的查詢類型,遭受緩慢的查詢時間性能
發明內容
利用傳統的結構化數據儲存庫來另外地提供非結構化全文搜索系統的許多益處,從而避免準備兩個不同的索引/存儲庫中的數據的開銷以及伴隨的存儲開銷和插入性能懲罰。獨立于數據的任何規則分列式解釋的列被添加到傳統的結構化數據儲存庫,從而創建“增強型結構化數據儲存庫”(ESDS)。添加的列使得能夠使用可以全速執行的標準全文查詢句法/技術(與諸如SQL查詢中的“like”子句的標準數據庫管理系統(DBMS)設施相反)來搜索它們存儲的數據。換句話說,添加的列用作搜索索引。固定數量的“擴展”列被添加到傳統的結構化數據儲存庫,以形成增強型結構化數據儲存庫(ESDS)。將針對其實現更快的全文搜索的數據被解析為標記(token)(例如,單詞)。每個標記基于該標記的哈希值被存儲在合適的擴展列中。使用哈希方案來確定哈希值,所述哈希方案基于標記的值而不是標記的含義(其中,所述含義基于所述標記在結構化數據儲存庫中通常將對應的“列”或“字段”)來操作。這使得后續的搜索能夠被表達為全文查詢,而不會使得隨后的搜索退化為在單個blob (二進制大對象)字段或在每一個列上的強力掃描。可使用任何哈希方案。不同的哈希方案將基于正被存儲的數據的統計分布而導致不同的性能水平(例如,不同的搜索速度)。在一個實施例中,哈希方案使用來自標記本身(即,來自標記的值)的字符作為哈希值。在另一實施例中,基于標記的長度(即,字符的數量)確定標記的哈希值。在又一實施例中,標記的長度屬性與另一屬性(例如,來自標記的字符)相結合來確定哈希值。當用戶查詢增強型結構化數據儲存庫(ESDS)時,他可使用標準全文查詢句法。例如,用戶可輸入“fox (狐貍)”作為查詢。基于正使用的哈希方案將查詢“fox”翻譯為標準數據庫查詢句法(例如,結構化查詢語言或“SQL”)。例如,如果哈希方案使用標記的第一個字符作為標記的哈希值,則“fox”將被翻譯為針對“where field F= ‘fox’”的SQL或針對“where field F contains ‘fox’”的SQL。如果哈希方案使用標記的第二個字符作為標記的哈希值,則“fox”將被翻譯為針對“where field 0= ‘fox’”的SQL或針對“where fieldO contains ‘fox’” 的 SQL。擴展字段可直接支持短語搜索。字符串被解析為標記,以及每個單獨的標記被存儲在擴展字段中。除了這些“標準”標記以外,另外的標記也被存儲在擴展字段中。例如,以字符串出現的每對標記也按照短語順序被存儲在合適的擴展字段中,以及從而可用于搜索。在一個實施例中,標記對包括由特殊字符(例如,下劃線字符分開的第一標記和第二標記。所述_字符指示第一標記和第二標記按照該順序出現在字符串中并彼此相鄰。單獨的標記和標記對兩者可被存儲在擴展字段中。擴展字段還可通過存儲附加標記來直接支持“begins with”和“ends with”搜索,所述附加標記使用特殊字符來指示關于標準標記的附加信息,諸如標準標記是字符串中的第一個標記還是字符串中的最后一個標記。上述技術(例如,基于標記的值和哈希方案將標記存儲在擴展字段中)可以與任何結構化數據儲存庫一起使用。例如,所述技術可以與基于行的數據庫管理系統(DBMS)—起·使用。然而,所述技術特別適合于基于列的DBMS。基于列的DBMS是有利的,因為所述技術將查詢縮窄到必須包含給定搜索項的特定列(擴展字段)(即使最終用戶根本沒有指定列)。行的其他字段不需要被檢查(或者甚至不需要被加載)以確定結果。
圖I示出根據本發明的一個實施例的事件描述以及在增強型結構化數據儲存庫中可如何表示該事件描述的示例。圖2是根據本發明的一個實施例的使用增強型結構化數據儲存庫來實現更快的全文搜索的系統的框圖。圖3是根據本發明的一個實施例的用于將事件信息存儲在增強型結構化數據儲存庫中的方法的流程圖。圖4是根據本發明的一個實施例的用于對增強型結構化數據儲存庫中存儲的事件信息執行全文搜索的方法的流程圖。
具體實施例方式在說明書中描述的特征和優點不是全都包括的,并且特別地,鑒于附圖、說明書和權利要求書,許多另外的特征和優點對于本領域的普通技術人員而言將是清楚的。在說明書中使用的語言主要是為了可讀性和指導的目的而選擇的,并且可能不被選擇用于描繪或限制公開的主題。附圖和以下描述僅通過例證的方式涉及本發明的實施例。這里公開的結構和方法的可替換的實施例可在不脫離所要求保護的內容的原理的情況下被采用。現在將詳細參照若干實施例,其示例在附圖中被示出。在任何可行的地方,相似或相同的參考標號可在附圖中被使用并可指示相似或相同的功能。所述附圖僅為了例證的目的而描繪公開的系統(或方法)的實施例。本領域技術人員將容易地從以下描述認識到在此示出的結構和方法的可替換的實施例可在不脫離在此描述的原理的情況下被采用。如在此所使用的,術語“結構化數據”是指對其元素或原子具有限定的結構的數據。結構化數據的一個示例是被存儲在關系數據庫中的行。結構化數據的另一個示例是電子表格的行,其中,特定列中的單元總是存儲特定類型的數據(例如,列A中的單元總是存儲地址,以及列B中的單元總是存儲社會安全號)。文本文件通常是非結構化數據,因為除了可通過查看單詞本身來推斷的內容之外,文檔不指示關于任何給定單詞的意義的內容。換句話說,不存在關于數據的元數據,只存在數據本身。然而,如果添加了記號(諸如每個動詞之前的〈verb〉標簽),則文檔會具有某一結構。具有模式(schema)是強加結構的另一方式。如在此所使用的,術語“結構化數據儲存庫”是指具有列以及針對所述列的數據類型(即,模式)的數據儲存庫。存儲在結構化數據儲存庫中的數據被一致組織到合適的列中。結構化數據儲存庫的一個示例是關系數據庫。結構化數據儲存庫的另一個示例是電子表格。在一個實施例中,利用傳統的結構化數據儲存庫來另外地提供非結構化全文搜索系統的許多益處,從而避免準備兩個不同的索引/存儲庫中的數據的開銷以及伴隨的存儲開銷和插入性能懲罰。獨立于數據的任何規則分列式解釋的列被添加到傳統的結構化數據儲存庫,從而創建“增強型結構化數據儲存庫”(ESDS)。添加的列使得能夠使用可以全速執行的標準全文查詢句法/技術(與諸如SQL查詢中的“like”子句的標準數據庫管理系統 (DBMS)設施相反)來搜索它們存儲的數據。換句話說,添加的列用作搜索索引。將針對其實現全文搜索的數據可以以各種方式被存儲。一種選擇是將所有的數據作為單個blob (二進制大對象)存儲在一個添加的列中。該字段中的值然后可被搜索。然而,使用這種方法的全文搜索將是耗時的。另一種選擇是將數據解析成標記(例如,單詞),并將每個標記存儲在它自己的添加列中。這樣,數據將在若干個列之間被展開,而不是作為blob被存儲在單個列中。該方法的一個問題在于添加的列的數量將基于數據的內容和/或格式(具體地,數據中的標記的數量)而變化。此外,使用這種方法的全文搜索將是耗時的。在一個實施例中,固定數量的“擴展”列被添加到傳統的結構化數據儲存庫,以形成增強型結構化數據儲存庫(ESDS)。每個標記基于該標記的哈希值而被存儲在合適的擴展列中。使用哈希方案來確定哈希值,所述哈希方案基于標記的值而不是標記的含義(其中,所述含義基于所述標記在結構化數據儲存庫中通常將對應的“列”或“字段”)來操作。這使得后續的搜索能夠被表達為全文查詢,而不會使得隨后的搜索退化為在單個blob字段或在每一個列上的強力掃描。示例
考慮僅使用以下四個“基本”字段來存儲“事件”(全文用語中的“文檔”或DBMS用語中的“行”)的傳統的結構化數據儲存庫時間戳字段、計數字段、事情描述(incidentdescription)字段和錯誤描述字段。為了將事件存儲在傳統的結構化數據儲存庫中,從事件描述提取或者基于包含在事件描述內的信息來確定時間戳值、計數值、事情描述值和錯誤描述值。所述時間戳值、計數值、事情描述值和錯誤描述值然后被分別存儲在傳統的結構化數據儲存庫中的條目的時間戳字段、計數字段、事情描述字段和錯誤描述字段中。所述時間戳值、計數值、事情描述值和錯誤描述值然后可被訪問或被查詢。由于時間戳值、計數值、事情描述值和錯誤描述值被存儲,因此它們可經受全文搜索。然而,由于不存在搜索索引,因此全文搜索將需要強力搜索。現在,傳統的結構化數據儲存庫被增強以支持對事件信息的更快的全文搜索。具體地,36個擴展字段被添加到4個現有的基本字段(如上說明的時間戳、計數、事情描述和錯誤描述),從而創建增強型結構化數據儲存庫(ESDS)。因此,ESDS使用40個字段存儲事件4個基本字段和36個擴展字段。所述基本字段基于數據的含義存儲結構化數據。所述擴展字段基于每個標記的值存儲事件標記。在示出的實施例中,針對字母表的每個字母包括一個擴展字段(A至Z,總共26個字母表字段)并且針對每個數字包括一個擴展字段(O至9,總共10個數字字段),總計36個擴展字段。換句話說,使用40個字段來存儲事件時間戳、計數、事情描述、錯誤描述、A、B、…、Y、Z、0、1、…、8、9。圖I示出根據本發明的一個實施例的事件描述以及在增強型結構化數據儲存庫中可如何表示該事件描述的示例。在圖I中,該事件如下記載
3:40am :A quick brown fox jumped over the lazy dog 3 times (早上 3 :40 :—只快速的褐色狐貍三次跳過懶惰的狗)
為了將事件信息存儲在ESDS中,所述事件被解析為標記。從事件描述中提取(或者基于包含在事件描述內的信息來確定)“結構化”數據,并且將其存儲在基本字段中。事件信 息中期望被索引化(即,為了更快的全文搜索而被實現)的部分被識別。該部分可以例如是存儲在基本字段中的值或者是整個事件描述。該部分的標記被存儲在擴展字段(搜索索引)中,以及因此能夠以更快的方式被全文搜索。注意,一個標記可被存儲兩次一一次在基本字段中,以及一次在擴展字段中。在示出的示例中,時間戳值(3:40am)、計數值(3)、事情描述值(A quick brownfox jumped over the lazy dog 3 times at 3:40am (一只快速的褐色狐涯在早上 3 :40三次跳過懶惰的狗))、以及錯誤描述值(unusual jumping activity at 3:40am(在3:40am的不正常的跳躍活動))從事件描述中被提取(或基于包含在事件描述內的信息而被確定),并被分別存儲在時間戳基本字段、計數基本字段、事情描述基本字段以及錯誤描述基本字段中。假設僅期望使得事情描述值能夠進行高速全文搜索。事情描述值被解析為13個標記,即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個標記中的每一個根據該標記的哈希值被存儲在擴展字段中。假設哈希方案選擇標記的第一個字符作為該標記的哈希值。所述標記然后被存儲在合適的擴展字段中。標記I (“A”)將具有哈希值“A”并從而被存儲在“A”字段中,標記2 (“quick”)將具有哈希值“Q”并從而被存儲在“Q”字段中,標記3 (“brown”)將具有哈希值“B”并從而被存儲在“B”字段中,以此類推。圖I示出在增強型結構化數據儲存庫中可如何表示事件信息,其中,所述增強型結構化數據儲存庫使用上述40個字段(4個基本字段和36個擴展字段)和第一字符哈希方案,并使得能夠按照更快的方式全文搜索事情描述值。注意,標記I (“A”)和標記2 (“quick”)均被存儲兩次——一次在基本字段(事情描述)中,以及一次在擴展字段(分別是“A”和“Q”)中。另外,標記I (“A”)和標記12(“at”)具有相同的哈希值(“A”),以及因此都被存儲在相同的字段(“A”)中。現在,假設期望實現事情描述值和錯誤描述值兩者的高速全文搜索。來自這些值的標記被存儲在合適的擴展字段中。注意,僅一組擴展字段(例如,36個擴展字段)對于存儲所述標記是必要的,即使來自兩個不同的值(事情描述值和錯誤描述值)的標記正被存儲。
例如,圖I示出事情描述值的標記如何被存儲在擴展字段中。如果還期望實現錯誤描述值的高速全文搜索,則所述值被解析為5個標記(“unusual'“jumping”、"activity”、“at”和“3:40am”),并且那些標記被存儲在擴展字段中。“unusual ”標記將具有哈希值“U”,以及因而被存儲在“U”擴展字段中,以此類推。記得已實現了事情描述值的高速全文搜索。這使得“ at ”標記(來自事情描述值內)被存儲在“A”擴展字段中。錯誤描述值也包括標記“at”。在一個實施例中,擴展字段指示事件中的標記作為整體的(例如,在被實現高速搜索的事件的所有部分中)存在或不存在。在該實施例中,每個事件將僅存儲一次標記,即使該標記在該事件中出現多次。因此,在該實施例中,即使標記“at”在事情描述值和錯誤描述值兩者中均出現,但標記“at”將僅被存儲一次。
注意,以下結合短語搜索討論的標記對可包括已被存儲的標記。例如,除了標記“at”,(來自事情描述值的)標記對“times_at”和“at_3:40am”可被存儲。作為另一示例,(來自錯誤描述值的)標記對“activity_at”也可被存儲。在上述實施例中,(來自錯誤描述值的)標記對“at_3:40am”將不被存儲,因為它已經結合(來自事情描述值的)標記對“at_3:40am” 被存儲。搜索查詢可指示標記必須出現在特定基本字段內。在這種情況下,在任意位置(例如,在已實現高速全文搜索的事件的任意基本字段中)包含該標記的事件可基于所述標記在所述事件內的精確位置而經受進一步的處理。例如,如果事件在特定基本字段內不包含所述標記,則可從一組搜索結果中排除所述事件。羞統
圖2是根據本發明的一個實施例的使用增強型結構化數據儲存庫來實現更快的全文搜索的系統的框圖。系統200能夠對存儲在增強型結構化數據儲存庫(ESDS)中的事件信息(具體地,對存儲在ESDS的擴展字段中的事件信息)執行更快的全文搜索。示出的系統200包括全文搜索系統205、存儲裝置210和數據儲存庫管理系統215。在一個實施例中,全文搜索系統205和數據儲存庫管理系統215(及它們的組件模塊)是存儲在一個或多個計算機可讀存儲介質上并在一個或多個處理器上執行的一個或多個計算機程序模塊。存儲裝置210 (及其內容)被存儲在一個或多個計算機可讀存儲介質上。另外,全文搜索系統205和數據儲存庫管理系統215 (及它們的組件模塊)以及存儲裝置210至少在數據可在它們之間傳送的程度上被通信地彼此耦合。全文搜索系統205包括多個模塊,諸如控制模塊220、解析模塊225、映射模塊230、哈希模塊235以及查詢翻譯模塊240。控制模塊220控制全文搜索系統205(即,它的各個模塊)的操作,使得全文搜索系統205可將事件信息存儲在增強型結構化數據儲存庫(ESDS)245中,并對存儲在ESDS的擴展字段中的事件信息執行更快的全文搜索。以下將參照圖3(存儲)和圖4 (搜索)來討論控制模塊220的操作。解析模塊225基于定界符將字符串解析成標記。定界符通常被劃分為兩組“空白空間(white space)”定界符和“特殊字符”定界符。空白空間定界符包括例如空格、制表符、換行以及回車。特殊字符定界符包括例如大多數剩余的非字母數字字符,諸如逗號(“,”)或句號(“.”)。在一個實施例中,定界符是可配置的。例如,空白空間定界符和/或特殊字符定界符可基于正被解析的數據(例如,數據的句法)而被配置。
在一個實施例中,解析模塊225基于一組定界符和修剪策略將字符串分割為標記(稱為“標記化(tokenization)”)。在一個實施例中,默認定界符組是{ ‘ ’、‘\n’、‘\r’、‘,,、‘\t,、‘=,、‘I,、O,},并且默認修剪策略是忽視在標記的開始或結束處出現的特殊字符(除{‘+’}以外)。定界符可以是靜態的或上下文敏感的。上下文敏感的定界符的示例是僅在它們跟在看起來像IP地址的內容之后時才被視為定界符的{ ‘ ’、‘/’ }。這是為了處理事件中常見的IP地址和端口號的組合,諸如10. 10. 10. 10/80或10. 10. 10. 10:80。如果這些字符被包括在默認定界符組中,則文件名和URL將被分割成多個標記,這可能不準確。未修剪的非定界符字符的任意鄰接字符串被視為是標記。在一個實施例中,為了性能的原因,解析模塊225使用有限狀態機(而不是正則表達式)。通常,任何解析器/標記化器(tokenizer)可被用于基于一組定界符和修剪策略來將字符串分割成標記。公共可用的標記化器的一個示例是作為Java標準庫的一部分的java. util. StringTokenizer0 StringTokenizer使用一個或多個字符(例如,空白空間字符)的固定定界符字符串來將字符串分割成多個字符串。這種方法的問題是使用相同的定界符而不管上下文如何的不靈活性。另一方法是使用已知正則表達式模式的列表并將字符 串的匹配部分識別為標記。這種方法的問題是性能。映射模塊230從事件描述(例如,字符串)中提取結構化數據,并將所述數據存儲在(一個或多個)合適的基本字段中。所述映射模塊與現有的從事件描述中提取特定值并使用提取的值來按照規格化模式填充字段的技術相似。存儲在基本字段中的值可以具有各種數據類型,諸如時間戳、數字、網際協議(IP)地址或字符串。注意,某些數據可能不被存儲在任何基本字段中。哈希模塊235確定用于特定標記的哈希值。該哈希值指示增強型結構化數據儲存庫(ESDS) 245中的哪個擴展字段應該被用于存儲該特定標記。根據哈希方案來確定哈希值。所述哈希方案基于標記的值而不是標記的含義(其中,所述含義基于所述標記在結構化數據儲存庫中通常將對應的“列”或“字段”)來進行操作。該標記的值作為字符串被存儲在合適的擴展字段中。這種哈希方案的一個示例是使用來自標記(S卩,來自標記的值)的字符作為哈希值。如果所述字符是字母,則所述標記可具有26個哈希值(字母表A至Z的每個字母一個)中的任意一個。所述標記然后將被存儲在26個擴展字段(字母表A至Z的每個字母一個)之一中。如果所述字符是數字,則所述標記可具有10個哈希值(O至9的每個數字一個)中的任意一個。所述標記然后將被存儲在10個擴展字段(O至9的每個數字一個)之一中。如果所述字符可以是字母或數字,則所述標記可具有36個哈希值(字母表A至Z的每個字母一個,以及O至9的每個數字一個)中的任意一個。所述標記然后將被存儲在36個擴展字段(字母表A至Z的每個字母一個,以及O至9的每個數字一個)之一中。如果所述字符可以是除字母或數字以外的某種字符(即,非字母數字),則可使用附加的包羅萬象(catchall)哈希值(“ Other (其他),,)和擴展字段(“ Other,,)。被用作哈希值的字符可以是例如標記的第一個字符、標記的第二個字符或標記的最后一個字符。如果哈希方案使用第二個字符并且所述標記僅是字符,則特定字符被使用(例如,空格“ ”字符)。
除了如已描述的使用來自標記本身的字符的哈希方案以外,存在可使用的另外的方法和改進。例如,可基于標記的長度(即,字符的數量)來確定哈希值(并且因而確定合適的擴展字段)。例如,考慮使用標記的長度作為該標記的哈希值的哈希方案。來自以下字符串A quick brown fox jumped over the lazy dog 3 times at 3:40am 的標記將具有以
下哈希值__
權利要求
1.一種用于將信息存儲在結構化數據儲存庫內的條目中的計算機實現方法,其中,所述條目包括一個或多個基本字段以及一個或多個擴展字段,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標記;以及 對于所述多個標記中的每個標記 基于哈希方案確定所述標記的哈希值;以及 將所述標記存儲在與確定的哈希值對應的擴展字段中。
2.如權利要求I所述的方法,其中,字符串的所識別的部分包括整個字符串。
3.如權利要求I所述的方法,其中,字符串的所識別的部分是存儲在基本字段中的值。
4.如權利要求I所述的方法,其中,標記的哈希值包括字符。
5.如權利要求I所述的方法,其中,哈希方案包括使用標記的第一個字符作為該標記的哈希值。
6.如權利要求I所述的方法,其中,標記的哈希值包括數字。
7.如權利要求I所述的方法,其中,哈希方案包括使用標記內的字符的數量作為該標記的哈希值。
8.如權利要求I所述的方法,其中,哈希方案包括使用標記的第一個字符以及標記內的字符的數量作為該標記的哈希值。
9.如權利要求I所述的方法,還包括 對于所述多個標記中的每個標記 產生標記對,所述標記對包括所述標記以及在字符串的所識別的部分內緊接在所述標記之后的第二標記; 基于哈希方案確定所述標記對的哈希值;以及 將所述標記對存儲在與確定的哈希值對應的擴展字段中。
10.如權利要求I所述的方法,還包括 對于所述多個標記中的每個標記 如果所述標記是字符串的所識別的部分內的第一個標記,則 產生包括特殊字符和所述標記的開始標記,其中,所述特殊字符指示所述標記是字符串的所識別的部分內的第一個標記; 基于哈希方案確定所述開始標記的哈希值;以及 將所述開始標記存儲在與確定的哈希值對應的擴展字段中。
11.如權利要求I所述的方法,還包括 對于所述多個標記中的每個標記 如果所述標記是字符串的所識別的部分內的最后標記,則 產生包括所述標記和特殊字符的結束標記,其中,所述特殊字符指示所述標記是字符串的所識別的部分內的最后標記;基于哈希方案確定所述結束標記的哈希值;以及 將所述結束標記存儲在與確定的哈希值對應的擴展字段中。
12.一種用于將信息存儲在結構化數據儲存庫內的條目中的計算機程序產品,其中,所述條目包括一個或多個基本字段以及一個或多個擴展字段,以及其中所述計算機程序產品被存儲在包括指令的計算機可讀介質上,當被加載到存儲器中時,所述指令使處理器執行方法,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標記;以及 對于所述多個標記中的每個標記 基于哈希方案確定所述標記的哈希值;以及 將所述標記存儲在與確定的哈希值對應的擴展字段中。
13.一種用于將信息存儲在結構化數據儲存庫內的條目中的系統,其中,所述條目包括一個或多個基本字段以及一個或多個擴展字段,所述系統包括 包括指令的計算機可讀介質,當被加載到存儲器中時,所述指令使處理器執行方法,所述方法包括 接收字符串; 從所述字符串提取彳目息; 基于提取的信息的含義將提取的信息存儲在所述條目的所述一個或多個基本字段中; 識別所述字符串的將使得能夠進行更快搜索的一部分; 將所述字符串的所識別的部分解析為多個標記;以及 對于所述多個標記中的每個標記 基于哈希方案確定所述標記的哈希值;以及 將所述標記存儲在與確定的哈希值對應的擴展字段中;以及 用于執行所述方法的處理器。
全文摘要
利用傳統的結構化數據儲存庫來提供非結構化全文搜索系統的益處。固定數量的“擴展”列被添加到傳統的結構化數據儲存庫,以形成“增強型結構化數據儲存庫”(ESDS)。擴展列獨立于數據的任何規則分列式解釋以及使得能夠使用可以更快執行的標準全文查詢句法/技術(與SQL句法相反)來搜索它們存儲的數據。換句話說,添加的列用作搜索索引。基于標記的哈希值將該標記存儲在合適的擴展列中。使用哈希方案來確定哈希值,所述哈希方案基于標記的值而不是標記的含義來操作。這使得后續的搜索能夠被表達為全文查詢,而不會使得隨后的搜索退化為強力掃描。
文檔編號G06F7/00GK102834802SQ201080060959
公開日2012年12月19日 申請日期2010年11月9日 優先權日2009年11月9日
發明者H.S.耶曼澤 申請人:Arc景象有限責任公司