專利名稱:基于垂直搜索引擎的信息存儲(chǔ)、查詢方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及搜索引擎技術(shù)領(lǐng)域,尤其涉及一種基于垂直搜索引擎的信息存儲(chǔ)方法及其裝置,以及一種基于垂直搜索引擎的信息查找方法及其裝置。
背景技術(shù):
垂直搜索引擎是相對(duì)通用搜索引擎的信息量大、查詢不準(zhǔn)確、深度不夠等問題而提出來的新的搜索引擎服務(wù)模式,是搜索引擎的細(xì)分和延伸,用于針對(duì)某一特定的領(lǐng)域、某一特定的人群或者某一特定需求,提供有一定價(jià)值的信息和相關(guān)服務(wù)。垂直搜索引擎通過對(duì)網(wǎng)頁庫中的某類專門信息進(jìn)行整合,定向、分字段抽取出需要的數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行處理后再以某種形式返回給用戶。垂直搜索引擎的基本架構(gòu)如圖1所示,其中,垂直搜索引擎的索引系統(tǒng)數(shù)據(jù)庫主要包括字典與倒排表、正排表/屬性(Attribute)和摘要(Summary)三部分。如圖2所示,所述字典和倒排表組合在一起稱之為倒排索引,字典是指由索引詞組成的索引表,在字典中保存了各種中英文詞匯以及對(duì)應(yīng)該些詞匯的一些統(tǒng)計(jì)信息。倒排表是指每個(gè)索引詞出現(xiàn)過的文檔集合,以及命中位置等信息組成的記錄表。倒排表中的各個(gè)文檔以文檔編號(hào)唯一標(biāo)識(shí),每個(gè)文檔編號(hào)是由該文檔所在網(wǎng)頁的URL經(jīng)過MD5算法變換得到的一個(gè)整型值。字典一般存儲(chǔ)在內(nèi)存中,倒排表一般存儲(chǔ)在硬盤上。正排表/屬性是存儲(chǔ)在內(nèi)存中,用于記錄倒排表中的每個(gè)文檔的屬性值的集合。其結(jié)構(gòu)組成如圖3所示,包括頭信息文件、正排表索引文件以及正排表數(shù)據(jù)文件。其中,頭信息文件用于存儲(chǔ)文檔字段值的類型信息、文檔數(shù)量等信息,正排表索引文件用于存儲(chǔ)每個(gè)文檔中預(yù)設(shè)字段的屬性值在正排表數(shù)據(jù)文件中的起始位置的偏移量和屬性值個(gè)數(shù)的信息對(duì),正排表數(shù)據(jù)文件,用于按照預(yù)設(shè)順序存儲(chǔ)每個(gè)文檔的預(yù)設(shè)字段的屬性值。摘要是用于將搜索結(jié)果返回的文檔的字段信息的集合?;谏鲜龃怪彼阉饕娴幕炯軜?gòu),垂直搜索引擎的查詢?cè)砭唧w如下:S1:將用戶輸入的搜索詞作拆分處理,根據(jù)拆分后的搜索詞進(jìn)行倒排索引。即根據(jù)拆分后的搜索詞,分別在字典中查找與該拆分后的各搜索詞對(duì)應(yīng)的詞典信息,然后根據(jù)查找到的詞典信息在倒排表中查詢出現(xiàn)過該詞典的所有文檔的標(biāo)識(shí)信息的集合。S2:根據(jù)SI中查找到的所有文檔的標(biāo)識(shí)信息,在正排表中查詢對(duì)應(yīng)每個(gè)文檔標(biāo)識(shí)信息的文檔的屬性值。S3:按照預(yù)設(shè)的排序算法,根據(jù)在正排表中查找到的每個(gè)文檔的屬性值,計(jì)算每個(gè)文檔的排序分值,并根據(jù)計(jì)算得到的每個(gè)文檔的排序分值,將各文檔進(jìn)行排序處理,根據(jù)排序后的順序,依次向用戶返回文檔的摘要信息。這里以輸入的搜索詞匯是dell computer為例,對(duì)上述垂直搜索引擎過程做以詳細(xì)說明。首先將輸入的搜索詞匯做分詞處理,分成dell和computer,然后在字典里分別查詢dell和computer,得到與dell和computer分別對(duì)應(yīng)的倒排表,如圖4所示,以computer為例,對(duì)應(yīng)computer的文檔標(biāo)識(shí)信息為O和2,即computer在標(biāo)識(shí)信息為O和2的文檔中出現(xiàn)過。對(duì)應(yīng)標(biāo)識(shí)信息O和2,在正排表中查詢文檔標(biāo)識(shí)為O和2的文檔對(duì)應(yīng)的屬性值。例如,以標(biāo)識(shí)信息2為例,在正排表索引文件中取得與該文檔對(duì)應(yīng)的屬性值實(shí)際保存的起始存儲(chǔ)位置的偏移量和屬性值個(gè)數(shù)信息對(duì),即11/6,其中11表示該文檔對(duì)應(yīng)的屬性值實(shí)際保存的起始位置的偏移量,6表示該文檔的屬性值個(gè)數(shù)(如圖4所示),然后根據(jù)獲得的偏移量和屬性值個(gè)數(shù),在正排表數(shù)據(jù)文件中查詢到屬性值:0,1,50032886,50032888,50041278和50048524,以同樣的步驟獲取文檔標(biāo)識(shí)為O的文檔的屬性值信息,然后使用排序算法,根據(jù)查找到的文檔0、2的屬性值信息,分別對(duì)文檔標(biāo)識(shí)信息為O和2的文檔進(jìn)行排序分值計(jì)算,得到對(duì)應(yīng)文檔的排序分值,根據(jù)計(jì)算得到的排序分值對(duì)兩個(gè)文檔進(jìn)行排序,例如排序后的順序?yàn)?,0,則根據(jù)排序后的順序2,0,依次向用戶返回文檔2和O的摘要信息。上述詳細(xì)闡述了使用垂直搜索引擎技術(shù)實(shí)現(xiàn)數(shù)據(jù)搜索的具體實(shí)施方案,因?yàn)檎疟硎切枰鎯?chǔ)在內(nèi)存中的,而在正排表的數(shù)據(jù)文件中,存儲(chǔ)的被索引的文檔的屬性值中,會(huì)有較多的相同的文件屬性值重復(fù)存儲(chǔ),例如在上述圖4中,文檔標(biāo)識(shí)為O的文檔屬性值和文檔標(biāo)識(shí)為2的文檔屬性值就是完全相同的,而在正排表數(shù)據(jù)文件中卻要重復(fù)存儲(chǔ)兩次,這種重復(fù)性的存儲(chǔ)會(huì)占用較多的內(nèi)存資源,使得在用戶使用垂直搜索引擎查詢相關(guān)信息時(shí),會(huì)因?yàn)橄到y(tǒng)的內(nèi)存資源不夠而使得搜索的速率降低。
發(fā)明內(nèi)容
本申請(qǐng)實(shí)施例提供一種基于垂直搜索引擎的信息存儲(chǔ)、查詢方法及其裝置,用以降低對(duì)內(nèi)存資源的占用,提高用戶使用垂直搜索引擎查詢相關(guān)信息的速率。本申請(qǐng)實(shí)施例提出的技術(shù)方案如下:一種基于垂直搜索引擎的信息存儲(chǔ)方法,包括:針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值;根據(jù)確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值、該指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;如果判斷結(jié)果為是,將在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;如果判斷結(jié)果為否,確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將確定的所述屬性相關(guān)值、起始存儲(chǔ)位置的偏移量和屬性值數(shù)目映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。一種基于垂直搜索引擎的信息存儲(chǔ)方法,包括:針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值;根據(jù)確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值和文檔標(biāo)識(shí)信息;如果判斷結(jié)果為是,根據(jù)在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的文檔標(biāo)識(shí)信息,在正排表索引文件中與該文檔標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中查找對(duì)應(yīng)的偏移量和屬性值數(shù)目;將查找到的偏移量和屬性值數(shù)目作為該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;如果判斷結(jié)果為否,確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將該待存儲(chǔ)的文檔的標(biāo)識(shí)信息與確定的所述屬性相關(guān)值映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。一種基于垂直搜索引擎的信息存儲(chǔ)方法,包括:在對(duì)應(yīng)文檔一個(gè)指定屬性字段的正排表索引文件中,當(dāng)至少兩個(gè)文檔的標(biāo)識(shí)信息分別對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目相同時(shí),判斷所述至少兩個(gè)文檔中的一個(gè)文檔的該指定屬性字段中包含的屬性值是否發(fā)生變化;若發(fā)生變化,則根據(jù)該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目,在該指定屬性字段的正排表數(shù)據(jù)文件中查找對(duì)應(yīng)該文檔的相應(yīng)數(shù)目的屬性值;并將查找到的屬性值重新寫入到所述數(shù)據(jù)文件中的空白區(qū)域,并將寫入的屬性值更新為變化后的屬性值;以及修改該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目與重新寫入的區(qū)域和更新后的屬性值數(shù)目對(duì)應(yīng)。—種基于上述信息存儲(chǔ)方法進(jìn)行信息查詢的方法,包括:將用戶輸入的搜索詞作拆分處理,根據(jù)拆分后的搜索詞基于倒排表進(jìn)行倒排索引,得到拆分后的搜索詞所出現(xiàn)在的至少一個(gè)文檔的標(biāo)識(shí)信息;針對(duì)得到的每個(gè)文檔的標(biāo)識(shí)信息,分別基于正排表進(jìn)行正排索引,得到每個(gè)文檔分別對(duì)應(yīng)的屬性值;按照預(yù)設(shè)的排序算法,根據(jù)在正排表中得到的每個(gè)文檔的屬性值,計(jì)算每個(gè)文檔的排序分值;根據(jù)計(jì)算得到的每個(gè)文檔的排序分值,將各文檔進(jìn)行排序處理,根據(jù)排序后的順序,依次返回各文檔的摘要信息。一種基于垂直搜索引擎的信息存儲(chǔ)裝置,包括:屬性相關(guān)值確定單元,用于針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值;判斷單元,用于根據(jù)屬性相關(guān)值確定單元確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值、該指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;執(zhí)行單元,用于在判斷單元判斷出消重字典中存儲(chǔ)有所述屬性相關(guān)值時(shí),將在消重字典中存儲(chǔ)的與屬性相關(guān)值確定單元確定的屬性相關(guān)值對(duì)應(yīng)的起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;以及在判斷單元判斷出消重字典中未存儲(chǔ)有所述屬性相關(guān)值時(shí),確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將確定的所述屬性相關(guān)值、起始存儲(chǔ)位置的偏移量和屬性值數(shù)目映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。一種基于垂直搜索引擎的信息存儲(chǔ)裝置,包括:屬性相關(guān)值確定單元,用于針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值;判斷單元,用于根據(jù)屬性相關(guān)值確定單元確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值和文檔標(biāo)識(shí)信息;執(zhí)行單元,用于在判斷單元判斷出消重字典中存儲(chǔ)有所述屬性相關(guān)值時(shí),根據(jù)在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的文檔標(biāo)識(shí)信息,在正排表索引文件中與該文檔標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中查找對(duì)應(yīng)的偏移量和屬性值數(shù)目;將查找到的偏移量和屬性值數(shù)目作為該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;以及在判斷單元在判斷單元判斷出消重字典中未存儲(chǔ)有所述屬性相關(guān)值時(shí),確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將該待存儲(chǔ)的文檔的標(biāo)識(shí)信息與確定的所述屬性相關(guān)值映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。一種基于垂直搜索引擎的信息存儲(chǔ)裝置,包括:判斷單元,用于在對(duì)應(yīng)文檔一個(gè)指定屬性字段的正排表索引文件中,當(dāng)至少兩個(gè)文檔的標(biāo)識(shí)信息分別對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目相同時(shí),判斷所述至少兩個(gè)文檔中的一個(gè)文檔的該指定屬性字段中包含的屬性值是否發(fā)生變化;查找單元,用于在判斷單元判斷出至少一個(gè)文檔的該指定屬性字段中包含的屬性值發(fā)生變化時(shí),則根據(jù)該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目,在該指定屬性字段的正排表數(shù)據(jù)文件中查找對(duì)應(yīng)該文檔的相應(yīng)數(shù)目的屬性值;修改單元,用于將查找單元查找到的屬性值重新寫入到所述數(shù)據(jù)文件中的空白區(qū)域,并將寫入的屬性值更新為變化后的屬性值;以及修改該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目與重新寫入的區(qū)域和更新后的屬性值數(shù)目對(duì)應(yīng)。一種基于上述信息存儲(chǔ)裝置進(jìn)行信息查詢的裝置,包括:分詞處理單元,用于將用戶輸入的搜索詞作拆分處理,根據(jù)拆分后的搜索詞基于倒排表進(jìn)行倒排索引,得到拆分后的搜索詞所出現(xiàn)在的至少一個(gè)文檔的標(biāo)識(shí)信息;屬性值確定單元,用于針對(duì)分詞處理單元得到的每個(gè)文檔的標(biāo)識(shí)信息,分別基于正排表進(jìn)行正排索引,得到每個(gè)文檔分別對(duì)應(yīng)的屬性值;排序分值計(jì)算單元,用于按照預(yù)設(shè)的排序算法,根據(jù)屬性值確定單元在正排表中得到的每個(gè)文檔的屬性值,計(jì)算每個(gè)文檔的排序分值;摘要信息返回單元,用于根據(jù)排序分值計(jì)算單元計(jì)算得到的每個(gè)文檔的排序分值,將各文檔進(jìn)行排序處理,根據(jù)排序后的順序,依次返回各文檔的摘要信息。本申請(qǐng)實(shí)施例針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值,根據(jù)確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與該屬性相關(guān)值相同的數(shù)值,如果判斷結(jié)果為是,將在消重字典中存儲(chǔ)的與該屬性相關(guān)值對(duì)應(yīng)的起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;如果判斷結(jié)果為否,則確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,然后將確定出的屬性相關(guān)值、起始存儲(chǔ)位置的偏移量和屬性值數(shù)目映射存儲(chǔ)在所述消重字典中,并將確定的偏移量和屬性值數(shù)據(jù)寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,在正排表中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,從而使得在不同的待存儲(chǔ)文檔在某一指定屬性字段內(nèi)具有相同屬性值時(shí),在正排表數(shù)據(jù)文件中只對(duì)該指定字段的屬性值存儲(chǔ)一次,然后在正排表索引文件中對(duì)應(yīng)存儲(chǔ)該屬性值在正排表數(shù)據(jù)文件中的起始存儲(chǔ)地址的偏移量和屬性值數(shù)目,從而能夠降低垂直搜索引擎系統(tǒng)中正排表對(duì)內(nèi)存資源的占用,進(jìn)而提高了用戶使用垂直搜索引擎系統(tǒng)進(jìn)行信息查詢的速率。
圖1為現(xiàn)有技術(shù)中,提出的垂直搜索引擎的基本組成架構(gòu)圖;圖2為現(xiàn)有技術(shù)中,提出的垂直搜索引擎中倒排索引的組成結(jié)構(gòu)圖;圖3為現(xiàn)有技術(shù)中,提出的垂直搜索引擎中正排索引的組成結(jié)構(gòu)圖;圖4為現(xiàn)有技術(shù)中,提出的垂直搜索引擎工作原理示意圖;圖5為本申請(qǐng)實(shí)施例一中,提出的基于垂直搜索引擎的信息存儲(chǔ)方法流程圖;圖6為本申請(qǐng)實(shí)施例一中,提出的基于垂直搜索引擎的信息存儲(chǔ)方法對(duì)文檔的存儲(chǔ)結(jié)構(gòu)圖;圖7為本申請(qǐng)實(shí)施例一中,提出的基于垂直搜索引擎的信息存儲(chǔ)裝置結(jié)構(gòu)圖;圖8為本申請(qǐng)實(shí)施例三中,提出的基于垂直搜索引擎的信息存儲(chǔ)方法流程圖;圖9為本申請(qǐng)實(shí)施例三中,提出的基于垂直搜索引擎的信息存儲(chǔ)裝置結(jié)構(gòu)圖;圖10為本申請(qǐng)實(shí)施例四中,提出的基于垂直搜索引擎的信息查詢方法流程圖;圖11為本申請(qǐng)實(shí)施例四中,提出的基于垂直搜索引擎的信息查詢裝置結(jié)構(gòu)圖。
具體實(shí)施例方式針對(duì)現(xiàn)有技術(shù)中存在的在垂直搜索引擎系統(tǒng)中,不同文檔如果在某一指定屬性字段內(nèi)具有相同的屬性值,會(huì)在正排表數(shù)據(jù)文件中重復(fù)性存儲(chǔ)該些相同的屬性值,從而導(dǎo)致占用較多的內(nèi)存資源,使得用戶在使用垂直搜索引擎系統(tǒng)查詢信息時(shí),會(huì)因?yàn)橄到y(tǒng)的內(nèi)存資源不夠而致使搜索速率降低的問題,本申請(qǐng)實(shí)施例這里提出一種基于垂直搜索引擎的信息存儲(chǔ)、查詢方法及其裝置,主旨是盡量在不同文檔中具有相同屬性值時(shí),在正排表數(shù)據(jù)文件中盡量僅存儲(chǔ)一份該些相同的屬性值,然后在正排表索引文件中分別使用相同的起始地址偏移量指向數(shù)據(jù)文件中這些相同的屬性值,從而為后續(xù)查詢屬性值時(shí)提供實(shí)現(xiàn)基礎(chǔ)。并因此有效地降低了正排表對(duì)內(nèi)存資源的占用,提高了用戶使用垂直搜索引擎系統(tǒng)查詢信息的速率,特別是對(duì)于大多數(shù)文檔在具有較多相同的屬性值的情況下,本申請(qǐng)實(shí)施例的方案效果將更為明顯。需要說明的是,針對(duì)每一個(gè)待存儲(chǔ)的文檔,可以只包含一個(gè)屬性字段,也可以包含多個(gè)屬性字段,每個(gè)屬性字段內(nèi)又包含不同的屬性值。本申請(qǐng)各實(shí)施例中以待存儲(chǔ)文檔的每一指定屬性字段為例分別介紹,即本申請(qǐng)方案可以適用于待存儲(chǔ)文檔的不同指定屬性字段,為描述方便清晰起見,本申請(qǐng)實(shí)施例這里僅是以其中某一個(gè)指定的屬性字段為例來進(jìn)行介紹。在建立垂直搜索引擎系統(tǒng)中的正排表時(shí),一般是對(duì)應(yīng)文檔的每個(gè)指定屬性字段分別建立一個(gè)正排表,即文檔有多個(gè)屬性字段時(shí),可能會(huì)對(duì)應(yīng)多個(gè)不同的正排表,并在多個(gè)不同的正排表中分別查詢到不同的屬性值。例如,假設(shè)一個(gè)文檔有4個(gè)不同的屬性字段,則對(duì)應(yīng)該文檔的4個(gè)不同的屬性字段會(huì)有4個(gè)不同的正排表分別存儲(chǔ)不同屬性字段的屬性值。下面將結(jié)合各個(gè)附圖對(duì)本申請(qǐng)實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理具體實(shí)施方式
及其對(duì)應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)地闡述。
本申請(qǐng)實(shí)施例這里提出一種基于垂直搜索引擎的信息存儲(chǔ)方法,如圖5所示,具體過程如下:步驟501,根據(jù)配置信息,初始化正排表中的頭信息文件Fieldname, pfl.1nfo。其中,配置信息包括文檔數(shù)目,文檔相應(yīng)的字段值類型等信息。具體地,初始狀態(tài)下,文檔數(shù)目可以是O。字段值類型可以但不限于包括定長多值類型、變長多值類型或者是字符串類型等。步驟502,在對(duì)正排表頭信息文件進(jìn)行初始化配置后,針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值。其中,可以采用預(yù)先設(shè)定的算法,對(duì)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值執(zhí)行運(yùn)算,從而得到一個(gè)唯一的數(shù)值作為該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值,其中預(yù)設(shè)的算法可以但不限于是MD5算法或者是哈希(hash)算法,當(dāng)然還可以為其他可以對(duì)數(shù)組計(jì)算得到唯一數(shù)值的算法。一種較佳的實(shí)現(xiàn)方式,可以對(duì)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,執(zhí)行哈希運(yùn)算,將運(yùn)算得到的結(jié)果作為該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值。例如,本申請(qǐng)實(shí)施例一這里將待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,執(zhí)行哈希運(yùn)算,得到一個(gè)64位哈希值,將得到的64位哈希值做為該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值(這里可以稱之為key值)。步驟503,根據(jù)步驟502中確定的屬性相關(guān)值,將確定的屬性相關(guān)值做為鍵值key,根據(jù)該鍵值判斷在消重字典中是否存儲(chǔ)有與確定出的該key值相同的數(shù)值,如果判斷結(jié)果為是,執(zhí)行步驟504 ;如果判斷結(jié)果為否,則執(zhí)行步驟505。其中,消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值、該指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目。其中每個(gè)文檔的每個(gè)指定屬性字段都對(duì)應(yīng)有一個(gè)消重字典,如果一個(gè)文檔有N個(gè)屬性字段,則對(duì)應(yīng)該文檔就存儲(chǔ)了 N個(gè)消重字典,初始狀態(tài)下,消重字典中未存儲(chǔ)任何信息,隨著待存儲(chǔ)文檔的數(shù)目不斷增加,消重字典中學(xué)習(xí)到的存儲(chǔ)信息也不斷進(jìn)行更新。消重字典可以存儲(chǔ)計(jì)算機(jī)的任何一個(gè)位置,例如可以存儲(chǔ)在內(nèi)存中,也可以存儲(chǔ)在計(jì)算機(jī)硬盤上,較佳地,本申請(qǐng)實(shí)施例中選擇將消重字典存儲(chǔ)在計(jì)算機(jī)硬盤上。具體地,消重字典的存儲(chǔ)形式可以有多種方式,本申請(qǐng)實(shí)施例一這里以對(duì)每個(gè)文檔的指定屬性字段采用哈希運(yùn)算得到的哈希值做為屬性相關(guān)值為例來進(jìn)一步闡述消重字典的存儲(chǔ)形式,如下述表I所示,是消重字典的其中一種存儲(chǔ)形式:
權(quán)利要求
1.一種基于垂直搜索引擎的信息存儲(chǔ)方法,其特征在于,包括: 針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值; 根據(jù)確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值、該指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目; 如果判斷結(jié)果為是,將在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中; 如果判斷結(jié)果為否,確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目; 將確定的所述屬性相關(guān)值、起始存儲(chǔ)位置的偏移量和屬性值數(shù)目映射存儲(chǔ)在所述消重字典中;并 將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。
2.如權(quán)利要求1所述的方法,其特征在于,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值,包括: 對(duì)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,執(zhí)行哈希運(yùn)算; 將運(yùn)算得到的結(jié)果作 為該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值。
3.一種基于垂直搜索引擎的信息存儲(chǔ)方法,其特征在于,包括: 針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值; 根據(jù)確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值和文檔標(biāo)識(shí)息; 如果判斷結(jié)果為是,根據(jù)在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的文檔標(biāo)識(shí)信息,在正排表索引文件中與該文檔標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中查找對(duì)應(yīng)的偏移量和屬性值數(shù)目; 將查找到的偏移量和屬性值數(shù)目作為該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中; 如果判斷結(jié)果為否,確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目; 將該待存儲(chǔ)的文檔的標(biāo)識(shí)信息與確定的所述屬性相關(guān)值映射存儲(chǔ)在所述消重字典中;并 將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。
4.一種基于垂直搜索引擎的信息存儲(chǔ)方法,其特征在于,包括: 在對(duì)應(yīng)文檔一個(gè)指定屬性字段的正排表索引文件中,當(dāng)至少兩個(gè)文檔的標(biāo)識(shí)信息分別對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目相同時(shí),判斷所述至少兩個(gè)文檔中的一個(gè)文檔的該指定屬性字段中包含的屬性值是否發(fā)生變化; 若發(fā)生變化,則根據(jù)該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目,在該指定屬性字段的正排表數(shù)據(jù)文件中查找對(duì)應(yīng)該文檔的相應(yīng)數(shù)目的屬性值;并 將查找到的屬性值重新寫入到所述數(shù)據(jù)文件中的空白區(qū)域,并將寫入的屬性值更新為變化后的屬性值;以及 修改該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目與重新寫入的區(qū)域和更新后的屬性值數(shù)目對(duì)應(yīng)。
5.一種基于I 4任一權(quán)利要求所述的信息存儲(chǔ)方法進(jìn)行信息查詢的方法,其特征在于,包括: 將用戶輸入的搜索詞作拆分處理,根據(jù)拆分后的搜索詞基于倒排表進(jìn)行倒排索引,得到拆分后的搜索詞所出現(xiàn)在的至少一個(gè)文檔的標(biāo)識(shí)信息; 針對(duì)得到的每個(gè)文檔的標(biāo)識(shí)信息,分別基于正排表進(jìn)行正排索引,得到每個(gè)文檔分別對(duì)應(yīng)的屬性值; 按照預(yù)設(shè)的排序算法,根據(jù)在正排表中得到的每個(gè)文檔的屬性值,計(jì)算每個(gè)文檔的排序分值; 根據(jù)計(jì)算得到的每個(gè)文檔的排序分值,將各文檔進(jìn)行排序處理,根據(jù)排序后的順序,依次返回各文檔的摘要信息。
6.一種基于垂直搜索引擎的信息存儲(chǔ)裝置,其特征在于,包括: 屬性相關(guān)值確定單元,用于針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值; 判斷單元,用于根據(jù)屬性相關(guān)值確定單元確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值、該指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目; 執(zhí)行單元,用于在判斷單元判斷出消重字典中存儲(chǔ)有所述屬性相關(guān)值時(shí),將在消重字典中存儲(chǔ)的與屬性相關(guān)值確定單元確定的屬性相關(guān)值對(duì)應(yīng)的起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;以及在判斷單元判斷出消重字典中未存儲(chǔ)有所述屬性相關(guān)值時(shí),確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將確定的所述屬性相關(guān)值、起始存儲(chǔ)位置的偏移量和屬性值數(shù)目映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。
7.如權(quán)利要求6所述的裝置,其特征在于,所述屬性相關(guān)值確定單元,具體用于對(duì)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,執(zhí)行哈希運(yùn)算;將運(yùn)算得到的結(jié)果作為該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值。
8.一種基于垂直搜索引擎的信息存儲(chǔ)裝置,其特征在于,包括: 屬性相關(guān)值確定單元,用于針對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,確定該待存儲(chǔ)文檔的指定屬性字段的屬性相關(guān)值; 判斷單元,用于根據(jù)屬性相關(guān)值確定單元確定的屬性相關(guān)值,判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值,所述消重字典中映射存儲(chǔ)有已存儲(chǔ)的各文檔的該指定屬性字段的屬性相關(guān)值和文檔標(biāo)識(shí)信息; 執(zhí)行單元,用于在判斷單元判斷出消重字典中存儲(chǔ)有所述屬性相關(guān)值時(shí),根據(jù)在消重字典中存儲(chǔ)的與確定的屬性相關(guān)值對(duì)應(yīng)的文檔標(biāo)識(shí)信息,在正排表索引文件中與該文檔標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中查找對(duì)應(yīng)的偏移量和屬性值數(shù)目;將查找到的偏移量和屬性值數(shù)目作為該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中;以及在判斷單元判斷出消重字典中未存儲(chǔ)有所述屬性相關(guān)值時(shí),確定該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值在正排表數(shù)據(jù)文件中起始存儲(chǔ)位置的偏移量和屬性值數(shù)目;將該待存儲(chǔ)的文檔的標(biāo)識(shí)信息與確定的所述屬性相關(guān)值映射存儲(chǔ)在所述消重字典中;并將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中與該待存儲(chǔ)文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中,并在正排表數(shù)據(jù)文件中該偏移量指向的位置開始寫入該待存儲(chǔ)文檔的指定屬性字段中包含的屬性值。
9.一種基于垂直搜索引擎的信息存儲(chǔ)裝置,其特征在于,包括: 判斷單元,用于在對(duì)應(yīng)文檔一個(gè)指定屬性字段的正排表索引文件中,當(dāng)至少兩個(gè)文檔的標(biāo)識(shí)信息分別對(duì)應(yīng)的存儲(chǔ) 域中存儲(chǔ)的偏移量和屬性值數(shù)目相同時(shí),判斷所述至少兩個(gè)文檔中的一個(gè)文檔的該指定屬性字段中包含的屬性值是否發(fā)生變化; 查找單元,用于在判斷單元判斷出至少一個(gè)文檔的該指定屬性字段中包含的屬性值發(fā)生變化時(shí),根據(jù)該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目,在該指定屬性字段的正排表數(shù)據(jù)文件中查找對(duì)應(yīng)該文檔的相應(yīng)數(shù)目的屬性值; 修改單元,用于將查找單元查找到的屬性值重新寫入到所述數(shù)據(jù)文件中的空白區(qū)域,并將寫入的屬性值更新為變化后的屬性值;以及修改該文檔的標(biāo)識(shí)信息對(duì)應(yīng)的存儲(chǔ)域中存儲(chǔ)的偏移量和屬性值數(shù)目與重新寫入的區(qū)域和更新后的屬性值數(shù)目對(duì)應(yīng)。
10.一種基于6 9任一權(quán)利要求所述的信息存儲(chǔ)裝置進(jìn)行信息查詢的裝置,其特征在于,包括: 分詞處理單元,用于將用戶輸入的搜索詞作拆分處理,根據(jù)拆分后的搜索詞基于倒排表進(jìn)行倒排索引,得到拆分后的搜索詞所出現(xiàn)在的至少一個(gè)文檔的標(biāo)識(shí)信息; 屬性值確定單元,用于針對(duì)分詞處理單元得到的每個(gè)文檔的標(biāo)識(shí)信息,分別基于正排表進(jìn)行正排索引,得到每個(gè)文檔分別對(duì)應(yīng)的屬性值; 排序分值計(jì)算單元,用于按照預(yù)設(shè)的排序算法,根據(jù)屬性值確定單元在正排表中得到的每個(gè)文檔的屬性值,計(jì)算每個(gè)文檔的排序分值; 摘要信息返回單元,用于根據(jù)排序分值計(jì)算單元計(jì)算得到的每個(gè)文檔的排序分值,將各文檔進(jìn)行排序處理,根據(jù)排序后的順序,依次返回各文檔的摘要信息。
全文摘要
本申請(qǐng)公開了一種基于垂直搜索引擎的信息存儲(chǔ)、查詢方法及其裝置,包括對(duì)每個(gè)待存儲(chǔ)的文檔,根據(jù)其指定屬性字段中包含的屬性值,確定屬性相關(guān)值;判斷在消重字典中是否存儲(chǔ)有與所述屬性相關(guān)值相同的數(shù)值;如果判斷結(jié)果為是,將消重字典中存儲(chǔ)的起始位置的偏移量和屬性值數(shù)目,寫入到正排表索引文件中;否則,確定所述屬性值在正排表數(shù)據(jù)文件中起始位置的偏移量和屬性值數(shù)目;將確定的屬性相關(guān)值、偏移量和屬性值數(shù)目存儲(chǔ)在消重字典中;將確定的偏移量和屬性值數(shù)目寫入到正排表索引文件中,并在該偏移量指向的位置開始寫入待存儲(chǔ)文檔的指定屬性字段中包含的屬性值,從而降低了內(nèi)存資源的占用,提高用戶使用垂直搜索引擎查詢相關(guān)信息的速率。
文檔編號(hào)G06F17/30GK103164408SQ20111040849
公開日2013年6月19日 申請(qǐng)日期2011年12月9日 優(yōu)先權(quán)日2011年12月9日
發(fā)明者孫權(quán), 程麗敏 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司