結構化文檔管理設備、搜索設備、存儲和搜索方法及程序的制作方法

            文檔序號:6630562閱讀:228來源:國知局
            專利名稱:結構化文檔管理設備、搜索設備、存儲和搜索方法及程序的制作方法
            技術領域
            本發明涉及一種具有層級邏輯結構的結構化文檔數據庫。
            背景技術
            存在不同方案的結構化文檔管理系統,用于存儲并搜索由例如可擴展的標注語言(XML)寫成的結構化文檔數據。
            (1)一種用于將結構化文檔數據作為文本文件數據管理的簡單方案在這種方案中,當所述數據數量或大小增加時,存儲器的效率可能降低,或者其可能變得難以利用結構化文檔的特性來執行搜索。
            (2)用于將結構化文檔數據存儲在關系數據庫(RDB)中的方案。
            (3)用于利用為管理結構化文檔數據而開發的面向對象的數據庫(OODB)執行管理的方案。
            RDB廣泛地使用的在基本系統中。而且,作為擴展RDB的XML使能的RDB是可利用的。由于RDB以平面表格形式存儲數據,它們要求能夠將層級結構的XML數據對應到表格的復雜的映射。由于這種映射,所述性能可能降低,除非對于表格預先設計滿意的圖表。
            除了上述提到的方案(1至3),近來已經建議了新的方案。
            (4)用于簡單地管理結構化文檔數據的方案在這種方案中,不用任何特殊的映射處理來存儲具有不同層級結構的XML數據。因此,在數據的存儲或獲取期間不存在特殊的開銷。而且,這個方案不需要成本高的預設計圖表,這使XML數據的結構可以根據商業環境中的變化而容易地變化。
            即使結構化文檔數據是有效存儲的,如果沒有用于獲取所存儲的數據的手段也是沒有意義的。查詢語言作為用于獲取所存儲數據的手段而存在。如同在RDB領域的結構化查詢語言(SQL),定義了XML查詢語言(XQuery)。XQuery是用于將XML數據作為數據庫操作的語言。提供了用于獲取、收集和/或分析符合條件的數據集。而且,由于XML數據具有層級結構,其中諸如父/子和兄弟的元素被結合,提供了用于遵循所述結構的手段。
            例如,KOKAI申請的公開號為No.2002-34618與No.2000-57163的日本專利,公開了一種用于遵循所存儲的結構化文檔數據的層級結構的技術,以搜索包括由搜索條件指定的特定元素和結構的結構化文檔數據。
            通常,保存在數據庫中的結構化文檔數據的規模越大、結構化文檔數據項的數量越大,搜索條件越復雜,跟隨包括在每一個結構化文檔數據項的層級結構內的元素的處理越多的時間。而且,由于所存儲的結構化文檔數據項的數量和每一個結構化文檔數據項的尺寸的增加,變得不可能處理在存儲器內的數據項,由此其中多數是保存在諸如硬盤的輔助存儲器中。
            在用于簡單管理結構化文檔數據的方案中,所述結構化文檔數據的元素的層級結構是直接存儲的。因此,為了檢查是否具有由搜索條件指定的元素或結構,必須頻繁地訪問保存在輔助存儲器中的結構化文檔數據的元素。對于更加復雜的搜索條件來說也是相同的。
            在引用的現有技術中,當具有期望元素或結構的結構化文檔數據項是從存儲有具有層級結構的結構化文檔數據項的數據庫中檢索的時,在遍歷數據庫內的每一個結構化文檔數據項的層級結構的元素時,使用搜索條件搜索。因此,高速搜索是不可能的。所要搜索的每一個結構化文檔數據項的尺寸越大、結構化文檔數據項的數量越大、搜索條件越復雜,提高搜索處理的速度越困難。

            發明內容
            按照以上描述的情況展開了本發明,目的是提供一種結構化文檔管理設備以及能夠以高速搜索結構化文檔數據的搜索設備。
            根據本發明的第一方面,提供了一種結構化文檔管理設備,包括存儲有多個結構化文檔數據項的數據存儲器,每一個數據項包括多個元素;存儲包括多個結構的公共結構的公共結構存儲器,所述多個結構包括在所述結構化文檔數據項內;被配置來獲取新的結構化文檔數據項的第一獲取單元;被配置來將所述公共結構更新為包括所述結構和包括在所述新結構化文檔數據項內多個結構的新公共結構的更新單元;被配置為獲取所述新公共結構和所述新結構化文檔數據項的結構之間的差分結構的第二獲取單元;存儲所述差分結構的差分結構存儲器;以及配置為將所述新結構化文檔數據項的元素的數組存儲到所述數據存儲器里的存儲單元,所述數組是基于所述差分結構排列的。
            根據本發明的第二方面,提供了一種搜索設備,包括存儲有多個結構化文檔數據項的存儲器,每一個數據項包括多個元素;被配置來獲取用于搜索包括在所述元素內的期望的元素的搜索條件的獲取單元;以及被配置來從搜索包括在所述結構化文檔數據項內的特定結構化文檔數據項中搜索所期望的元素的搜索單元,所述搜索單元包括被配置來基于在所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構的重構單元,所述公共結構包括在所述結構化文檔數據項內的多個結構,還包括所述特定結構化文檔數據項的結構;以及被配置來從所述重構的結構中檢測所期望的元素的檢測單元。
            根據本發明的第三方面,提供了一種方法,包括將新的結構化文檔數據項存儲到存儲有多個結構化文檔數據項的存儲器里,每一個數據項包括多個元素;獲取包括在所述結構化文檔數據項和所述新的結構化文檔數據項內的多個結構的公共結構;獲取所述公共結構和所述新結構化文檔數據項的結構之間的差分結構;以及將所述新結構化文檔數據項的元素的數組存儲到所述存儲器里,所述數組是基于所述新的差分結構排列的。
            根據本發明的第四方面,提供了一種方法,包括從搜索包括在多個結構化文檔數據項內的特定結構化文檔數據項中搜索所期望的元素,每一個數據項包括多個元素;基于在所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構,所述公共結構包括在所述結構化文檔數據項內的多個結構,還包括所述特定結構化文檔數據項的結構;以及從所述重構的結構中檢測期望的元素。
            根據本發明的第五方面,提供了一種存儲在由計算機讀取的媒質中的程序,所述程序包括用于指示計算機存儲每一個都包括多個元素的多個結構化文檔數據項的裝置,通過所述程序指令存儲新結構化文檔數據項;用于指示計算機獲取包括在所述結構化文檔數據項和新結構化文檔數據項內的多個結構的公共結構的裝置;用于指示計算機獲取所述公共結構和所述新結構化文檔數據項的結構之間的差分結構的裝置;以及用于指示計算機將所述新結構化文檔數據項的元素的數組存儲到所述存儲器里的裝置,所述數組是基于所述新的差分結構排列的。
            根據本發明的第六方面,提供了一種在由計算機讀取的媒質中存儲的程序,所述程序包括用于指示計算機存儲每一個都包括多個元素的多個結構化文檔數據項的裝置,所述程序用作從包括在所述結構化文檔數據項內的特定結構化文檔數據項中搜索所期望的元素的搜索設備;用于基于所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構的裝置,所述公共結構包括在所述結構化文檔數據項內的多個結構,還包括所述特定結構化文檔數據項的結構;以及用于指示計算機從所述重構的結構中檢測所期望元素的裝置。


            圖1是說明按照本發明實施例的結構化文檔管理系統的功能配置例子的視圖;圖2是說明服務器的硬件配置例子的視圖;圖3是說明結構化文檔數據的例子(文檔A)的視圖;圖4是說明結構化文檔數據的另一個例子(文檔B)的視圖;圖5是說明結構化文檔數據庫的數據結構的視圖;圖6是說明所述文檔A的文檔樹的視圖;圖7是說明所述文檔A的結構化數據的視圖;圖8是說明公共結構化數據例子的視圖;圖9是說明指示在圖8的公共結構化數據和文檔A之間差異的第一差分結構的視圖;圖10是說明指示在圖8的公共結構化數據和文檔A之間差異的第二差分結構的視圖;圖11是說明所述文檔B的文檔樹的視圖;圖12是說明所述文檔B的結構化數據的視圖;圖13是說明另一個公共結構化數據例子的視圖;圖14是說明指示在圖13的公共結構化數據和文檔B之間差異的第一差分結構的視圖;圖15是說明指示在圖13的公共結構化數據和文檔B之間差異的第二差分結構的視圖;圖16是說明差分結構化數據的存儲裝置例子的視圖;圖17是說明文檔對象記錄(數組)的存儲裝置例子的視圖;圖18是有利于解釋結構化數據提取處理的流程圖;圖19是有利于解釋公共結構注冊處理的流程圖;圖20是有利于解釋差分結構注冊處理的流程圖;圖21是有利于解釋差分結構注冊處理的另一個流程圖;圖22是說明結構化文檔數據的另一個例子(文檔C)的視圖;圖23是說明所述文檔C的文檔樹的視圖;
            圖24是說明所述文檔C的數據結構的視圖;圖25是說明指示在圖13的公共結構化數據和文檔C之間差異的第一差分結構的視圖;圖26是說明指示在圖13的公共結構化數據和文檔C之間差異的第二差分結構的視圖;圖27是說明差分結構化數據的存儲裝置例子的視圖;圖28是有利于解釋文檔對象存儲處理的流程圖;圖29是說明保存在索引數據存儲裝置中的索引數據的數據結構的示意圖;圖30是說明文檔對象記錄(數組)的存儲裝置例子的視圖;圖31是說明查詢數據例子的視圖;圖32是有利于解釋搜索處理單元的操作的概要的流程圖;圖33是有利于解釋結構化掃描單元的操作的流程圖;圖34是說明從圖31的查詢數據獲取的查詢圖表的視圖;圖35是有利于解釋基于圖34的查詢圖表的搜索處理的視圖;圖36是說明結果數據例子的視圖;圖37是說明另一個查詢數據例子的視圖;圖38是說明從圖37的查詢數據獲取的查詢圖表的視圖;圖39是有利于解釋基于圖38的查詢圖表的搜索處理的視圖;以及圖40是說明另一個結果數據例子的視圖。
            具體實施例方式
            本發明的實施例將參照附圖來描述。
            圖1是說明按照本發明實施例的結構化文檔管理系統的功能結構例子的視圖。如所示,所述結構化文檔管理系統基本上包括客戶機201和服務器101。當從所述客戶機201接收儲存數據或搜索數據的請求時,所述服務器101執行相對應的處理。
            所述客戶機201主要包括結構化文檔注冊單元202、搜索單元203、輸入單元204和輸出單元205。由諸如鍵盤和鼠標的輸入裝置形成的輸入單元204用來輸入結構化文檔和多種指令。所述結構化文檔注冊單元202用來將例如預先存儲在與客戶機201結合的存儲器內的結構化文檔存儲到結構化文檔數據庫(結構化文檔DB)111中。所述結構化文檔注冊單元202將存儲請求連同所要存儲的結構化文檔發送以所述服務器101。
            根據由用戶通過所述輸入單元204輸入的指令,所述搜索單元203產生查詢數據并且將包括所述查詢數據的搜索請求發送到所述服務器101,所述查詢數據例如包括為了所期望的數據而搜索所述結構化文檔數據庫111的搜索條件。而且,所述搜索單元203接收從所述服務器101返回的對應于所述搜索請求的結果數據,并且將其顯示在所述輸出單元205上。
            所述服務器101包括請求處理單元102、存儲處理單元103和搜索處理單元104。而且,所述服務器101連接到所述結構化文檔數據庫111。所述結構化文檔數據庫111包括公共結構化數據存儲裝置112、差分結構化數據存儲裝置113、索引數據存儲裝置114、文檔對象數據存儲裝置115。
            所述請求處理單元102判斷從所述客戶機201發送的請求是否是存儲請求或搜索請求,將所判斷的請求分配到所述存儲處理單元103或搜索處理單元104,以及將所述存儲處理單元103或搜索處理單元104的處理結果返回到所述客戶機201。
            所述存儲處理單元103從所述客戶機201接收存儲請求,以及將從所述客戶機201來的結構化文檔存儲到所述結構化文檔數據庫111中。所述存儲處理單元103包括文檔數據分析單元31、結構化數據提取單元32、公共結構注冊單元33、差分結構注冊單元34和文檔對象存儲單元35。
            所述文檔數據分析單元31分析從所述請求處理單元102發送的每一個結構化文檔的結構。基于所述分析結果,所述結構化數據提取單元32提取所述結構化文檔的(文檔)結構化數據。所述差分結構注冊單元34將保存在所述公共結構化數據存儲裝置112中的所述結構化數據和所述公共結構化數據之間的差異存儲到所述差分結構化數據存儲裝置113中。所述公共結構注冊單元33更新保存在所述公共結構化數據存儲裝置112中的公共結構化數據。
            所述文件對象存儲單元35將結構化文檔數據存儲到所述文件對象數據存儲裝置115中、還將用于檢測包括在所述結構化文檔數據中項的位置的索引數據存儲到所述文檔對象數據存儲裝置115中。由所述文檔數據分析單元31分析的對應于結構化文檔數據項的每一個元素(節點)的對象數據,是基于從所述結構化文檔數據項提取的差分結構化數據的次序來存儲到所述文檔對象數據存儲裝置115里的。
            所述搜索處理單元104從所述客戶機201接收搜索請求,在所述結構化文檔數據庫111中檢測相應于在所述請求中指定的條件(查詢數據)的數據,以及返回作為檢測結果數據的所檢測的數據到所述客戶機201。所述搜索處理單元104基本上包括查詢數據分析單元41、查詢執行單元42和結果產生單元46。所述查詢執行單元42包括結構掃描單元43、索引掃描單元44和數據聯接單元45。
            所述查詢數據分析單元41分析從所述請求處理單元102發送的查詢數據的結構。基于所述分析結果,所述查詢執行單元42利用所述結構掃描單元43和索引掃描單元44,查閱存儲在所述公共結構化數據存儲裝置112中的公共結構化數據、存儲在所述差分結構化數據存儲裝置113中的差分結構化數據和存儲在所述索引數據存儲裝置114中的索引數據。所述查詢執行單元42然后利用所述數據聯接單元45聯接所述參照結果。
            基于從所述數據聯接單元45獲取的數據,所述結果產生單元46從所述文檔對象數據存儲裝置115讀取對象數據,以及產生與包含于所述查詢數據中的條件相同的數據。
            圖2示出了所述服務器101的硬件配置例子。如所示,總線1連接到通信I/F(接口)單元2、便攜式記錄媒質驅動單元3、顯示單元4、輸入單元5、輸出單元6、運算單元(CPU)7、外部存儲單元8以及存儲器9。在圖2的配置中,所述總線1還連接到在圖1中出現的所述結構化文檔數據庫111。
            用于實現所述請求處理單元102、存儲處理單元103和搜索處理單元104的功能的程序,預先存儲在圖2中示出的外部存儲單元8中,以及從那里讀取到所述存儲器9以被運行。
            圖3示出了結構化文檔數據的例子。可擴展標注語言(XML)是作為用以表示結構化文檔的典型語言來示范。在圖3中示出的文檔(文檔A)是由XML寫成的。在XML中,結構化文檔的每一個組成部分稱作“元素”,每一個元素使用標記來編寫。特別地,每一個元素是通過在兩個標記之間插入文本數據來表示,也就是一個標記(開始標記)指示每一個元素的開始,一個標記(結束標記)指示每一個元素的結束。保持在所述開始和結束標記之間的文本數據是包括在由所述開始和結束標記表示的一個元素中的文本元素(文本節點)。
            在圖3的例子中,保持在標記<書>和</書>之間的元素包括根元素以及保持在<標題>和</標題>之間、在<作者>和</作者>之間、和在<摘要>和</摘要>之間的三個子元素。保持在<標題>和</標題>之間的子元素包括文本元素“數據庫”。而且,保持在<作者>和</作者>之間的子元素包括兩個子元素,每一個子元素保持在<作者>和</作者>之間。
            圖4示出了所述結構化文檔數據的另一個例子,其類似于圖3的例子。在圖3和4中示出的結構化文檔數據項的不同在于,在后者中,所述結構化文檔數據(文檔B)包括三個<作者>元素、以及代替<摘要>元素的<關鍵詞>元素。
            例如在XML中表示的結構化文檔具有以下特點它們是層級數據模型;它們可以包含相同的元素;它們包含按次序排列的元素;以及它們可以或可以不具有圖表。
            圖5邏輯上示出了結構化文檔數據庫的數據結構,其具有形式為節點和弧線(arc)的樹狀結構。多個結構化文檔是使用作為根的節點“根”而存儲為一個結構化文檔的一部分。
            節點“書夾”作為所述根節點“根”的子節點而存在。在節點“書夾”下面,存在有在圖3和4中示出的文檔A和B的各自的子樹。
            在圖5的情況下,使用“文件夾”和“文檔”的概念。特別地,所述節點“根”和“書夾”被認為是文件夾,多個文檔(在這種情況下,兩個文檔A和B)存在于所述文件夾下面。
            實際上,每一個節點(包括每個文本節點)是作為用于在所述文檔對象數據存儲裝置115中的對象數據的文件而保持的。稱作對象ID(OID)的標識符分配給每個節點(包括每個文本節點)。在圖5中,為了簡化說明,OID由數字表示。任何期望的對象數據可以通過指定其OID來獲取。實際上,每個OID包含有作為分配給包括每個節點(包括每個文本節點)的結構化文檔的標識符的文檔ID、以及指示在所述結構化文檔的存儲區中的存儲槽位置的存儲槽ID,所述結構化文檔是相應于每個節點的對象數據的結構化文檔。
            對應于各自節點的對象的屬性包括諸如子節點OID和父節點OID、相關弧線的信息,還包括標記名稱。
            (存儲)現在參照圖6至10,將簡短地描述當在圖3中示出的文檔A存儲到所述結構化文檔DB 111里時執行的所述存儲處理單元103的操作。這里假定所述文檔A是存儲在所述結構化文檔DB 111中的第一個結構化文檔數據。在這種情況下,還不存在公共的結構化數據。
            為接收從所述客戶機201發出的存儲所述文檔A的請求時,首先,所述文檔數據分析單元31分析所述文檔A的結構,由此輸出文檔樹,其位于作為根節點的節點“書”下面,如圖6所示。這種處理可以使用由公眾已知的編譯程序和編譯程序工具代表的結構分析技術來實現,諸如Yacc和Lex。
            所述結構化數據提取單元32從如圖6中示出的這種文檔樹中獲取如圖7中示出的這種結構化數據。所述公共結構注冊單元33從圖7中示出的公共結構獲取如圖8中示出的這種公共結構,以及將其存儲到所述公共結構化數據存儲裝置112里。所述公共結構表示在所存儲的結構化文檔中通常采用的結構。如圖8所示,在所述公共結構中,具有相同標記名稱的多個兄弟節點由一個節點代表。注意到在所述公共結構化數據存儲裝置112中,用于公共結構化數據的節點“根”是作為根節點而最初產生的,其統率表示所述公共結構化數據的樹。
            所述差分結構注冊單元34獲取與所述結構有關的信息,也就是獲取如圖10所示的這種差分結構化數據(第二差分結構化數據),所述結構包括在圖7所示文檔A的結構化數據中、而不是包括在圖8所示的公共結構化數據中。在這種實施例中,為了獲取所述第二差分結構化數據,將獲取如圖9所示的這種第一差分結構化數據。在以下說明中,如果僅僅指示包括在所述第一和第二差分結構化數據中的第二差分結構化數據,其可以簡單地稱為“差分結構化數據”。
            所述文檔A的結構化數據的節點“作者們”包括兩個節點“作者”。也就是,存在相同的子結構(子樹)。然而,由于這種重復結構是從所述公共結構排除的,其可以寫成如圖10所示的第二差分結構化數據。
            在所述第二差分結構化數據中,如果在結構化數據的某個節點下面重復地檢測到相同子樹(部分或全部的相同子樹),則將指示所述子樹檢測的數量的信息將作為屬性信息增加到所述特定節點,并且僅使用一個子樹來表示相同的子樹,如圖10所示。在這種情況下,如果存在不一定包括在相同子樹中的節點(不定節點),則將指示所述節點是不定節點的標志“?”將作為屬性信息附加到所述節點。
            所述公共結構化數據覆蓋至此存儲的多個結構化文檔數據項,而對于所存儲的每個結構化文檔數據項存在一個差分結構化數據項。而且,當存儲結構化文檔數據項時,如果此數據項包含有不包括在當前公共結構化數據內的節點,所述節點將增加到所述公共結構化數據。因此,簡單地增加了所述公共結構化數據大小。
            用于識別的節點ID分配給存儲在所述公共結構化數據存儲裝置112中公共結構化數據的各個節點。在圖8所示的公共結構情況下,節點ID“T0”指示根節點,節點ID“T1”到“T7”分配給另一個節點。也就是,當存儲所述文檔A時,用于去獲取差分結構化數據的公共結構化數據包含具有節點ID“T0”至“T7”的節點。當增加了其它結構化文檔數據項時,新的節點將增加到所述公共結構化數據。指示所述增加次序的新的節點ID將附加到所述新的節點。在所述實施例中,為了區分作為時標的公共結構化數據,所述公共結構化數據的最后節點ID將與所述差分結構化數據一起存儲在所述差分結構化數據存儲裝置113中。
            所述文檔A的差分結構化數據與用來獲取所述差分結構化數據的公共結構化數據的最后節點ID“T7”一起存儲在所述差分結構化數據存儲裝置113中,該存儲是例如圖16所示的“ManagementT7[1][1][2*][1][1][1]”的數據組的形式。
            基于在圖10中所示的差分結構化數據,所述文檔對象存儲單元35將排列的對象數據項存儲到所述文檔對象數據存儲裝置115里,所述對象數據項對應于所述文檔樹的各個節點(包括文本節點)。所述文檔對象數據存儲裝置115具有用于存儲各個結構化文檔數據項的多個存儲區,每個存儲區分成多個存儲槽。每個存儲槽具有指示其位置的存儲槽ID,以及用來存儲對應于每個存儲區的結構化文檔數據的每個對象數據項。存儲在一個存儲區中的結構化文檔數據項被稱作文檔對象記錄。所述文檔對象記錄是形成所述結構化文檔數據的多個元素的數組。所述數組元素的位置信息項對應于各自的存儲槽ID。
            如圖17所示,在存儲文檔(也就是文檔A)的存儲區中,首先存儲對應于所述公共結構化數據的各個節點的對象數據項,然后順序存儲在所述文檔樹中的不定節點或文本節點。所述對象數據項是以從所述差分結構化數據的左邊節點開始的次序、以及以從所述差分結構化數據的最高級節點開始的次序存儲的。
            將給出當將圖4的文檔B存儲到所述結構化文檔DB 111中時、執行的所述存儲處理單元103的操作的簡短說明。更具體地說,將給出其中在圖8中所示的公共結構化數據存儲到所述公共結構化數據存儲裝置112里的情況的說明。
            當接收從所述客戶機201發出的存儲所述文檔B的請求時,所述文檔數據分析單元31分析所述文檔B的結構,由此輸出文檔樹,其位于作為根節點的節點“書”下面,如圖11所示。
            所述結構化數據提取單元32從如圖11中所示的這種文檔樹中獲取如圖12中所示的這種結構化數據。
            所述公共結構注冊單元33將存儲在所述公共結構化數據存儲裝置112和在圖8中所示的公共結構化數據與圖12中所示的結構化數據相比較,由此更新圖8的公共結構化數據。也就是,在這種情況下,將增加作為如圖13所示的節點“書”的子節點的所述節點“關鍵詞”,所述節點“關鍵詞”不是包括在圖8的公共結構化數據中、而是包括在圖12的結構化數據中。注意所述節點“關鍵詞”的節點ID是“T8”。如圖8所示的這種公共結構是從在圖12中所示的結構化數據獲取的,并且存儲在所述公共結構化數據存儲裝置112中。
            所述差分結構注冊單元34獲取差分結構化數據(見圖15),其指示在圖12的結構化數據和圖13的公共結構化數據之間的差分結構。特別地,所述單元34獲取如圖14所示的這種第一差分結構化數據。如可以從圖14所理解,所述第一差分結構化數據另外包括不是包括在圖12的結構化數據中、而是包括在圖13的公共結構化數據中的節點,也就是節點“摘要”。將指示檢測數量是零的屬性信息“0”附加到這個節點。這意味著由所述節點“摘要”表示的元素不存在于所述文檔B中,而是存在于所述公共結構化數據中。
            包括在文檔B的結構化數據中的節點“作者們”具有三個節點“作者”,其意味著存在相同的子結構(子樹)。為表示這些,在圖15的第二差分結構化數據中,使用代表所述重復結構的一個子結構,其具有附加在該處的指示檢測數量是3的屬性信息“3*”。
            所述文檔B的差分結構化數據與用來獲取所述差分結構化數據的公共結構化數據的最后節點ID“T8”一起存儲在所述差分結構化數據存儲裝置113中,所述存儲是以例如圖16所示的“ManagementT8[1][1][3*][1][1]
            [1]”的數據組的形式。
            如圖17所示,在存儲文檔B的存儲區中,首先存儲對應于所述公共結構化數據的各自節點的對象數據項,然后順序存儲在所述文檔樹中的不定節點或文本節點。所述對象數據項是以從在所述根節點下的結構的第一子節點開始的次序存儲的,使用所述差分結構化數據的根節點作為起始點。對于在每個子節點下的結構,所述對象數據項是以從所述差分結構化數據的最高級節點開始、并且以最低級節點結束的次序存儲的。
            圖18是有利于解釋所述結構化數據提取單元32的結構化數據提取處理的流程圖。將給出從圖6的文檔樹中提取圖7的結構化數據的情況的說明。所述結構化數據是通過向下跟隨從所述根節點開始的文檔樹的節點,以及增加作為用于所述結構化數據的節點的所檢測的節點而提取的。
            特別地,首先,從所述文檔數據分析單元31輸出的圖6中所示文檔A的文檔樹的根節點被設置為所述結構化數據的根節點(步驟S1)。為了將所述文檔樹的節點增加到在所述根節點下的結構化數據,所述文檔樹的根節點被設置為“d”節點,以及所述結構化數據的根節點被設置為“f”節點(步驟S2)。如果所述“d”節點包括子節點(在步驟S3為是),所述“d”節點的第一子節點被設置為“d”節點′(步驟S4)。所述“d”節點′將作為所述“f”節點的子節點被增加,指示檢測數量是1的屬性信息“1”附加到所述子節點“d”節點′(步驟S5)。在屬于所述“d”節點的所有子節點上執行步驟S4和S5之后,將更新所述“d”節點和“f”節點,直到在所述文檔樹的所有節點上執行了步驟S4和S5(步驟S6和S7)。也就是在步驟S7,所述文檔樹的下一個節點(也就是跟隨被設置作為當前“d”節點的節點)將被設置為新的“d”節點,以及對應于所述新的“d”節點的結構化數據的節點被設置為新的“f”節點。隨后,所述程序回到步驟S3,以及重復步驟S3至35。
            在圖18所示的處理中,將以在所述結構化數據的根節點下依次增加節點“書”、“標題”和“作者”。然后,在所述節點“作者”下增加所述節點“作者們”的第一子節點,也就是節點“作者”,以及在所述節點“作者”下增加所述節點“作者”的子節點,也就是節點“名”和“姓”。類似地,在所述節點“作者們”下增加所述節點“作者們”的第二子節點,也就是另一個節點“作者”,以及在其下面增加這個節點的“作者”的子節點,也就是節點“名”和“姓”。最后,增加作為所述結構化數據的節點“書”的子節點的節點“摘要”。指示檢測數量是1的屬性信息將附加到每個節點。
            圖19是有利于解釋所述公共結構注冊單元33的公共結構注冊處理的流程圖。將給出當存儲包括在圖7的結構化數據中的第一文檔A時、產生新的公共結構化數據的情況的說明。在這種情況下,所述公共結構化數據是通過在向下跟隨圖7的結構化數據時、將所述結構化數據的節點與所述公共結構化數據的節點相比較而更新的,由此將不包括在所述公共結構化數據內的節點(“g”節點)增加到所述公共結構化數據。如上所述,當在所述結構化數據中檢測到相同節點(相同元素名稱的節點)時,僅將其中一個節點增加到所述公共結構化數據。
            特別地,從所述結構化數據提取單元32輸出的圖7中所示文檔A的結構化數據的根節點“書”被設置為“f”節點(步驟S11),。如果所述公共結構化數據在所述根節點“根”下面包含對應于“f”節點的節點,則程序進行到步驟S15,反之如果其不包含這種節點,則程序進行到步驟S13(步驟S12)。由于這種情況是指向新的公共結構化數據的產生的,在所述節點“根”下面不存在公共結構化數據,因此程序進行到步驟S13,其中增加作為所述節點“根”的子節點的“f”節點。也就是,增加所述節點“書”,以及將所述結構化數據的節點“書”設置為“g”節點(步驟S14)。
            其后,重復步驟S16到S21,由此在所述“g”節點下構造公共結構化數據。特別地如果所述“f”節點具有子節點(在步驟S16為是),則所述“f”節點的第一子節點設置為“f”節點′(步驟S17)。而且,如果所述公共結構化數據的“g”節點不包含與所述“f”節點′相同的節點(在步驟S18為否),所述“f”節點′將作為所述“g”節點的子節點而增加,并且將節點ID附加到所述子節點(步驟S19)。相反,如果所述公共結構化數據的“g”節點包含與所述“f”節點′相同的子節點(在步驟S18為是),程序回到步驟S16,由此將所述“f”節點的第二子節點設置為新的“f”節點′。對屬于所述“f”節點的所有子節點執行步驟S18和S19之后,更新所述“f”節點和“g”節點,直到對所述結構化數據的所有節點執行了步驟S18和S19(步驟S20和S21)。也就是在步驟S21,所述結構化數據的下一個節點(也就是跟隨被設置為當前“f”節點的節點)被設置為新的“f”節點而設置,并且對應于所述新的“f”節點的公共結構化數據的節點被設置為新的“g”節點。隨后,所述程序回到步驟S16,并且重復步驟S16至S19。
            通過上述的處理,獲取如圖8所示的這種公共結構化數據,其中在所述結構化數據中檢測到的相同的多個子樹中的一個代表所述多個子樹。最后,如圖8所示的這種公共結構化數據存儲在所述公共結構化數據存儲裝置112中(步驟S22)。
            現在將給出在將具有圖12所示結構化數據的文檔B存儲在其中已經存儲了圖8所示這種公共結構化數據的狀態中時、執行所述公共結構注冊處理的說明。在這種情況下,將僅描述與存儲所述文檔A的情況有關的不同點。在步驟S15,所述公共結構化數據的節點“書”被設置為“g”節點。在步驟S16到S21,更新存儲在所述公共結構化數據存儲裝置112中的公共結構化數據。包括在圖12的結構化數據中、而不包括在圖8的公共結構化數據中的節點是節點“關鍵詞”。因此,當在步驟S17將作為所述節點“書”的第三子節點的節點“關鍵詞”設置為“f”節點′時,在步驟S18對所述詢問的應答為否(由于圖8的公共結構化數據的節點“書”的子節點不包括所述節點“關鍵詞”)。這時,程序進行到步驟S19,其中所述節點“關鍵詞”作為所述節點“書”的另一個子節點而增加,節點ID“T8”附加到所增加的節點。
            從上述處理,獲取了如圖13所示的這種公共結構化數據。最后,更新存儲在所述公共結構化數據存儲裝置112中的公共結構化數據(步驟S22),其類似于在圖13中所示的公共結構化數據。
            圖20和21是有利于解釋由所述差分結構注冊單元34執行的差分結構注冊處理的流程圖。將例如使用其中存儲有具有圖12所示結構化數據的文檔B的情況,給出所述差分結構注冊處理的說明。
            首先,將圖12的結構化數據和圖13的公共結構化數據相比,由此檢測不是包括在圖的結構化數據中、而是包括在圖13的公共結構化數據中的節點,也就是節點“摘要”。隨后,將具有附加其上的屬性信息“0”的所述節點“摘要”增加到所述結構化數據,所述屬性信息指示檢測的數量是零。因此,產生如圖14所示的這種第一差分結構化數據。
            特別地,圖12中所示結構化數據的根節點“書”將設置為“f”節點(步驟S31)。然后,對應于所述“f”節點的所述公共結構化數據中的節點被設置為“g”節點(步驟S32)。
            如果所述“g”節點具有子節點(在步驟S33為是),所述“g”節點的第一子節點被設置為“g”節點′(步驟S44)。而且,如果所述結構化數據的“f”節點不包含與所述“g”節點′相同的節點(在步驟S35為否),所述“g”節點′作為所述“f”節點的子節點而添加,以及將指示檢測數量是零的屬性信息“0”附加到這個子節點(步驟S36)。相反,如果所述結構化數據的“f”節點包含與所述“g”節點′相同的節點(在步驟S35為是),程序回到步驟S33,由此將所述“g”節點的第二子節點設置為新的“g”節點′(步驟S34)。
            例如,如果在步驟S34將作為所述節點“書”的第三子節點的節點“摘要”設置為新的“g”節點′,在步驟S35對所述詢問的應答為否(由于圖12的結構化數據的節點“書”的子節點不包括節點“摘要”)。這時,程序進行到步驟S36,其中增加作為所述節點“書”的另一個子節點的節點“摘要”,以及將指示檢測數量是零的屬性信息“0”附加到所增加的節點。
            在屬于所述“g”節點的所有子節點上執行步驟S35和S36之后,更新所述“f”節點和“g”節點,直到在所述公共結構化數據的所有節點上執行了步驟S35和S36(步驟S37和S38)。也就是在步驟S38,所述結構化數據的下一個節點(也就是跟隨被設置為當前“g”節點的節點)被設置為新的“g”節點,以及對應于所述新的“g”節點的結構化數據的節點被設置為新的“f”節點。隨后,所述程序回到步驟S33,以及重復步驟S33至S36。
            從上述描述的處理中,獲取如圖14所示的這種第一差分結構化數據。
            隨后,產生如圖15所示的這種第二差分結構化數據,其中包括在所述第一差分結構化數據中的相同子結構中的一個代表它們。如果在所述第一差分結構化數據的特定節點下多次檢測到相同的子樹(在圖21中的步驟S41為是),就以完全重復形式重寫這個重復結構(步驟S42)。也就是,相同的子樹由包括在它們中的一個子樹代表,并且指示所述子樹的檢測數量的屬性信息將附加到所述子樹的根節點。
            圖14的第一差分結構化數據包含在所述節點“作者們”下的三個相同的子樹,其使用節點“作者”作為根。因此,如圖15所示,所述三個子樹中的一個代表它們,并且將指示所述子樹的檢測數量是3的屬性信息“3”附加到所述子樹的根節點“作者”。
            如果在所述第一差分結構化數據的特定節點下檢測到相同的子樹,并且如果至少其中一個子樹僅僅具有任何其它子樹的部分結構(在步驟S43為是),就以部分重復形式重寫所述重復結構(步驟S44)。
            現在將描述部分重復形式,使用在圖24中所示的結構化數據作為例子。圖24的結構化數據包含在節點“作者們”下的、使用有節點“作者”作為根的的兩個子樹。其中一個子樹不包括節點“姓”,而另一個子樹具有如所述文檔B的結構化數據的相同結構(見圖12)。
            圖25示出了指示在圖24的結構化數據和圖13的公共結構化數據之間差異的第一差分結構化數據。而且,圖26示出了第二差分結構化數據,其中在圖25中的其中一個相同子結構代表它們。
            圖25的第一差分結構化數據包含在所述節點“作者”下的兩個相同的子樹,其使用節點“作者”作為根。其中一個子樹不包括所述節點“姓”。因此,在圖21所示的步驟S44,如圖26所示,所述兩個子樹中的一個被用作代表,并且指示所述子樹的檢測數量的屬性信息“2”附加到所述子樹的根節點“作者”。而且,指示不定節點的屬性信息“?”附加到包括在所述子樹中的節點“名”。
            參照前面的圖21,除在所述第一差分結構化數據中的重復結構的部分(也就是,不包括重復結構并且可以由不多于預定門限值的信息數量表示的部分,其展開的形式未改變)是以展開的形式表示的(步驟S45)。也就是,由圖14的第一差分結構化數據中的節點“書”、“標題”、“作者”、“摘要”和“關鍵詞”形成的子樹在圖15的第二差分結構化數據中保持不變。
            由上述處理獲取的所述第二差分結構化數據以數據數組形式重寫(步驟S46)。特別地,附加到圖15中第二差分結構化數據的節點的各自檢測的數量是以從在所述根節點下的結構的第一子節點開始的次序排列的,其中使用所述根節點作為起始點。涉及在每個子節點下的結構,所述檢測的數量是以從所述結構化數據的最高級節點開始、并且以最低級節點結束的次序而排列的。換句話說,當按所述節點“書”、“標題”“作者們”、“作者”、“名”、“姓”、“摘要”和“關鍵詞”的次序排列節點的各自檢測的數量時,獲取數據[1][1][3*][1][1]
            [1]。
            如圖16所示,所述差分結構注冊單元34在所述差分結構化數據存儲裝置113中存儲所獲取的差分結構化數據,其具有附加的節點ID“T8”(稱作管理信息),節點ID“8”被分配給所述公共結構化數據的最后節點來獲取所述差分結構化數據。
            圖16示出了差分結構化數據的存儲器的例子。如所示,所述差分結構化數據存儲裝置113存儲文檔A和文檔B的差分結構化數據。
            所述文檔A的差分結構化數據是以數據數組形式排列,實際上以[1][1][2*][1][1][1]的數字序列形式排列。每個數據項具有以下意義[1]檢測到所述節點“標題”一次;[1]檢測到所述節點“作者”一次;[2*]檢測到使用所述節點“作者”作為根的結構兩次;[1]檢測到所述節點“作者/名”一次;[1]檢測到所述節點“作者/姓”一次;和 檢測到所述節點“摘要”一次。
            所述文檔A的差分結構化數據是以數據數組形式排列,實際上以[1][1][3*][1][1]
            [1]的數字序列形式排列。每個數據項具有以下意義[1]檢測到所述節點“標題”一次;[1]檢測到所述節點“作者”一次;[3*]檢測到使用所述節點“作者”作為根的結構三次;[1]檢測到所述節點“作者/名”一次;[1]檢測到所述節點“作者/姓”一次;和檢測到所述節點“摘要”零次,也就是沒有檢測到;和[1]檢測到所述節點“關鍵詞”一次。
            附加到每個差分結構化數據項的管理信息指示最大節點數量,從其中可以確定用于每個差分結構化數據項的公共結構化數據的范圍。每次存儲具有不包括在所述公共結構化數據中的新的結構化文檔數據時,就將這個節點增加到所述公共結構化數據。由于因此簡單地增加所述節點的數量,所述管理信息指示用于產生每個差分結構化數據項的公共結構化數據的范圍。
            圖22示出了所述結構化文檔數據的另一個例子,其具有類似于圖3的結構化文檔數據(文檔A)、或者圖4的結構化文檔數據(文檔B)的結構。也就是,在圖22的結構化文檔數據(文檔C)中,所述節點“作者”具有兩個節點“作者”,所述第二個節點“作者”不具有節點“姓”。而且,不存在節點“摘要”,而存在節點“關鍵詞”。
            圖23示出了在圖22中所示的文檔C的文檔樹。
            圖24示出了通過基于在圖23中所示的文檔C的文檔樹、而執行在圖18中所示的結構化數據提取處理所獲取的結構化數據。
            當存儲圖22的文檔C時,將由圖19的公共結構注冊處理來存儲到所述公共結構數據存儲裝置112里的公共結構化數據和圖13中所示的相同。因此,如果圖13中所示的公共結構化數據已經存儲在所述公共結構數據存儲裝置112中,就不對其進行更新。圖25示出了通過使用圖24的結構化數據和圖13的公共結構化數據來執行圖24的差分結構注冊處理所獲取的第一差分結構化數據。
            在圖25的第一差分結構化數據中,在所述節點“作者們”下面存在有使用節點“作者”作為根的兩個子樹,其中一個子樹不具有所述節點“姓”。而且,將具有指示所述檢測數量是零的屬性信息的節點“摘要”增加到所述節點“書”。類似地,將具有指示所述檢測數量是零的屬性信息的節點“姓”增加到所述第二節點“作者”。在圖26中所示的第二差分結構化數據包括具有指示所述檢測數量是零的屬性信息“0”的節點“摘要”。
            在圖26中所示的第二差分結構化數據可以[1][1][2*][1][?]
            [1]的數字序列來表示。如圖27所示,所述差分結構注冊單元34在所述差分結構化數據存儲裝置113中存儲具有附加的節點ID“T8”的差分結構化數據,節點ID“8”被分配給所述公共結構化數據的最后節點來獲取所述差分結構化數據。
            參照圖28的流程圖,將使用所述文檔B的文檔樹(見圖11)的情況作為例子給出所述文檔對象存儲單元35的操作的說明。當以從所述根節點開始的次序向下跟隨圖15的第二差分結構時,首先,對應于所述公共結構化數據的節點的所述文檔樹的對象數據項將順序存儲到所述文檔對象數據存儲裝置115里,然后將所述文檔的不定節點和文本節點順序存儲到其中。
            特別地,在圖15中所示的由所述差分結構注冊單元34獲取的第二差分結構化數據的根節點(節點“書”)被設置為“S”節點。而且,圖11的所述文檔樹的根節點(節點“書”)設置為“d”節點(步驟S51)。
            如果以展開的形式表示所述“S”節點(在步驟S52為是),則對應于所述文檔樹的“d”節點的對象數據將存儲到所述文檔對象數據存儲裝置115里(步驟S53)。目前,由于所述“s”節點處于展開的形式設置到了的所述節點“書”,所述對象數據、也就是對應于所述“d”節點的“書”,被存儲到所述文檔對象數據存儲裝置115的文檔B存儲區的第一存儲槽(存儲槽ID=0)里,如圖17所示。
            然后,在步驟S59,更新所述“s”節點和“d”節點,隨后程序回到步驟S52。在步驟S59,所述第二差分結構化數據的下一個節點、也就是節點“標題”,將設置為“s”節點,并且對應于此“s”節點的文檔樹的節點、也就是節點“標題”,將設置為“d”節點。
            并且在這種情況下,所述“s”節點是以展開形式表示(在步驟S52為是),因此對應于所述“d”節點的對象數據、也就是“標題”,被存儲到所述文檔對象數據存儲裝置115的文檔B存儲區的第二存儲槽(存儲槽ID=1)里,如圖17所示(步驟S53)。
            其后,在步驟S59,所述第二差分結構化數據的下一個節點、也就是節點“作者們”,被設置為“s”節點,并且對應于此“s”節點的文檔樹的節點、也就是節點“作者們”,被設置為“d”節點,隨后程序回到步驟S52。
            另外在這種情況下,所述“s”節點是以展開形式表示(在步驟S52為是),因此對應于所述“d”節點的對象數據、也就是“作者們”,被存儲到所述文檔對象數據存儲裝置115的文檔B存儲區的第三存儲槽(存儲槽ID=2)里,如圖17所示(步驟S53)。
            其后在步驟S59,所述第二差分結構化數據的下一個節點、也就是節點“作者”,被設置為“s”節點,并且對應于此“s”節點的文檔樹的節點、也就是節點“作者”,被設置為“d”節點,隨后程序回到步驟S52。
            在這種情況下,由于附加到所述“s”節點的屬性信息“3”指示檢測數量是3(在步驟S52為否),在“s”節點下的子樹以完全重復形式表示(在步驟S54為是),在所述文檔樹的“d”節點下的子樹中的對象數據項將以完全重復形式存儲到所述文檔對象數據存儲裝置115里(步驟S55)。更具體地說,在圖11所示的文檔樹中,由于檢測到使用“d”節點(也就是,節點“作者”)作為根的三個子樹,將包括在每個子樹中的對象數據項“作者”、“名”和“姓”順序存儲到三個連續的存儲槽的操作重復三次。結果,如圖17所示,包括在所述第一子樹中的對象數據項被存儲到所述文檔對象數據存儲裝置115的文檔B存儲區的第四存儲槽(存儲槽ID=3)至第六存儲槽(存儲槽ID=5)中。類似地,包括在所述第二子樹中的對象數據項被存儲到第七存儲槽(存儲槽ID=6)至第九存儲槽(存儲槽ID=8)里,以及包括在所述第三子樹中的對象數據項被存儲到第十存儲槽(存儲槽ID=9)至第十二存儲槽(存儲槽ID=11)里。
            由于包括在所述第二差分結構化數據中的節點“摘要”的檢測數量是“0”,所以在步驟S59忽略此節點并將所述節點“關鍵詞”設置為“s”節點,并且將包括在所述文檔樹中的對應于所述“s”節點的節點、也就是所述節點“關鍵詞”設置為“d”節點。然后,程序回到步驟S52。
            另外在這種情況下,所述“s”節點是以展開形式表示(在步驟S52為是),因此對應于所述當前“d”節點的對象數據、也就是“關鍵詞”,被存儲到所述文檔對象數據存儲裝置115的文檔B存儲區的第十三存儲槽(存儲槽ID=12)里,如圖17所示(步驟S53)。
            因此,完成了所述第二差分結構化數據的所有節點的檢測(在步驟S58為是),隨后程序進行到步驟S60,其中還沒有存儲的所述文檔樹的對象數據項被存儲到所述文檔對象數據存儲裝置115里。更具體地說,對應于文本數據項的對象數據項被順序存儲到例如所述具有存儲槽ID=21的存儲槽里,并且以和對應于所述公共結構化數據的各個節點的對象數據項相同的存儲次序,如圖17所示。
            將作為例子使用存儲所述文檔C的文檔樹的情況給出所述文檔對象存儲單元35的操作的說明(見圖23)。所述文檔對象存儲單元35使用在圖26中所示的第二差分結構化數據來存儲所述文檔樹的每個對象數據項。存儲對應于從所述根節點到節點“作者”范圍的節點的對象數據項的操作和在所述文檔B中所執行的相同。僅描述與所述文檔B的不同點。
            在步驟S59,所述第二差分結構化數據的下一個節點、也就是節點“作者”,被設置為“s”節點,并且對應于此“s”節點的文檔樹C的節點、也就是節點“作者”,被設置為“d”節點,隨后程序回到步驟S52。
            在這種情況下,由于附加到所述“s”節點的屬性信息“2”指示檢測數量是2(在步驟S52為否),并且在所述“s”節點下的子樹以部分重復形式表示(在步驟S54為否,在步驟S56為是),在所述文檔樹“d”節點下的子樹中的對象數據項將以部分重復形式存儲到所述文檔對象數據存儲裝置115里(步驟S57)。
            更具體地,在圖23所示的文檔樹中,盡管檢測到使用“d”節點(也就是,節點“作者”)作為根的兩個子樹,所述第二子樹不具有節點“姓”。因此,在所述第二差分結構化數據中,所述節點“LAST NAME”當作為不定節點。在步驟S57不存儲對應于所述不定節點的對象數據,而是在步驟S60存儲。
            在步驟S57,首先,將包括在每個子樹中的對象數據項“作者”和“名”順序存儲到兩個連續存儲槽里的操作重復兩次。結果,如圖30所示,包括在所述第一子樹中的對象數據項被存儲到所述文檔對象數據存儲裝置115的文檔C存儲區的第四存儲槽(存儲槽ID=3)和第五存儲槽(存儲槽ID=4)中。類似地,包括在所述第二子樹中的對象數據項被存儲到第六存儲槽(存儲槽ID=5)和第七存儲槽(存儲槽ID=6)里。
            此后,以和在存儲所述文檔B的情況相同的方式,所述對象數據“關鍵詞”被存儲到具有存儲槽ID=7的存儲槽里。
            因此,完成了所述第二差分結構化數據的所有節點的檢測(在步驟S58為是),隨后程序進行到步驟S60,其中在步驟S57還沒有存儲的所述文檔樹的對象數據項被存儲到所述文檔對象數據存儲裝置115里。更具體地說,所述第一子樹的對象數據“姓”被存儲到例如如圖30所示具有存儲槽ID=30的存儲槽里。然后,對應于文本數據項的對象數據項順序存儲到例如所述具有存儲槽ID=31的存儲槽里,并且以和對應于所述公共結構化數據的各個節點的對象數據項相同的存儲次序,如圖30所示。
            圖30示出了文檔對象記錄,也就是所述文檔A、B和C的文檔對象記錄的例子。所述文檔對象記錄與對應其的文檔ID相關地存儲。在每個文檔中的每個對象數據項是由所述文檔ID和存儲槽ID中唯一指定的。換句話說,如果給定了包括文檔ID和存儲槽ID的對象ID,可以訪問任何對象數據項。
            所述文檔對象存儲單元35將每個文檔樹的每個對象數據項存儲到所述文檔對象數據存儲裝置115里,并且基于在每個文檔樹中的每個對象數據項更新所述索引數據存儲裝置114。索引數據指示在所存儲結構化文檔數據中的文本元素的文本數據、和分配給在包括所述文本數據的所述結構化文檔數據內的元素的對象ID(OID)之間的關系。
            如圖29所示,所述索引數據存儲裝置114存儲有術語表格,以及多個存儲分配給文本元素的OID的表格,所述文本元素鏈接到包含于所述術語表格中的術語并且包括所述術語本身。通過跟隨包含于所述術語表格中的術語的鏈接,獲取了包括有所述術語的文本元素的檢測位置,也就是OID。
            每個對象數據項的對象ID以<文檔ID,存儲槽ID>來表示。所述文檔A、B和C的文檔ID分別是“文檔A”、“文檔B”和“文檔C”。
            (搜索)將描述圖1的搜索處理單元104的操作。
            圖31示出了輸入到所述搜索處理單元104的查詢數據的例子。在XML中,使用由W3C開發的XQuery(XML查詢語言),并且使用了基于這種語言的查詢描述方法。
            在圖31中所示的查詢數據描述了以下情況的AND(與)條件,這些情況是元素“書”存在于結構化文檔DB“DB”的層次樹中、元素“作者”存在于所述元素“書”中,以及所述元素“作者”包括具有包含字符串“Taro”的文本元素的元素“名”以及具有包含字符串“Tanaka”的文本元素的元素“姓”。
            如圖31所示的這種查詢數據將從所述客戶機201的搜索單元203發送到所述服務器101的請求處理單元102。
            然后參照圖32和33的流程圖,將給出當接收如圖31所示這種查詢數據時所執行的所述搜索處理單元104的操作的簡短說明。
            由所述請求處理單元102接收的查詢數據傳送到所述搜索處理單元104的查詢數據分析單元41。所述查詢數據分析單元41分析所接收的查詢數據的結構,并且基于所述分析結果提取稱作查詢圖表的圖形結構(步驟S101和S102)。例如,如圖34所示的這種查詢圖表是從圖31所示的查詢數據獲取的。可以由所述查詢圖表表示的在查詢數據內的這種結構以下將稱為“Sc”。
            如圖34所示,所述查詢圖表是將與包含在查詢數據內的元素(比如db“DB”、“書”、“作者”、“名”和“姓”)相對應的變量以及根據在所述元素之間的層次關系和在所述字符串之間的包含關系的變量連接而形成的。
            在圖34所示的查詢圖表內,變量是由圓形節點代表,變量名稱寫入所述圓周中。這些節點是所謂的變量節點。而且,在所述查詢數據內指定的元素由在其中寫有“TAG(標記)”的六邊形節點代表。這些節點是所謂的標記節點。此外,在所述查詢數據內指定的字符串是由其中寫有“CMP”的六邊形節點代表。這些節點是所謂的值比較標記。
            然后,為了將所述查詢圖表內的全部變量實例化,所述查詢執行單元42順序地產生稱為表格的代表所述變量組可以采用的值的全部可能組合的數據。
            特別地,其首先判斷包含在所述查詢圖表內的全部變量是否由一個表格實例化(步驟S103)。如果對在步驟S103的詢問的應答為是,也就是,如果實例化了全部變量,所實例化的變量是作為在步驟S111搜索結果的輸出。所述變量可以采用的值指示OID。
            如果包含在所述查詢圖表內的全部變量沒有被實例化的值(在步驟S104為是),則從步驟S104到步驟S110范圍的處理將重復,直到它們被實例化。
            在步驟S104,判斷使用保存在所述索引數據存儲裝置114中的索引的搜索是否可能。如果具有術語索引功能,比如存在“contains(包含)”,可以實現使用在所述結構化文檔DB 111內的索引數據的高速搜索。在這種情況下,所述索引掃描單元44執行索引掃描(步驟S105)。
            如果在所述查詢圖表上的特定變量被實例化,如果屬于比所述特定變量低等級的變量被實例化,并且如果屬于比所述特定變量高等級的變量沒有被示例(在步驟S106為否),則所述結構掃描單元43執行結構掃描(步驟S107)。
            在步驟S108,判斷多個表格是否包含相同的變量。如果對在步驟S108的詢問的應答為是,所述數據聯接單元45執行聯接處理以聯接所述多個列表(步驟S109)。
            如果對在步驟S108的詢問的應答為否,在步驟S110運行不同于上述的處理。
            如上述的,在步驟S111,執行結果輸出處理。這時,獲取所述變量可以采用的值的可能組合(即可能的OID的組合)作為表格。每個組合是由具有相同文檔ID的多個OID所形成的。因此,每個組合對應于一個結構化數據項。可以通過從所述文檔對象數據存儲裝置115中取得與每個文檔ID相對應的結構化數據、來獲取與所述查詢數據相對應的結構化文檔數據項的組,所述每個ID文檔是從作為表格的組合獲取的。
            圖35是有利于解釋基于圖34的查詢圖表的搜索處理的視圖。
            (1)由于所述查詢圖表包含值比較標記節點、以及所述項索引功能“contains”,使用如圖29所示的這種索引數據對所述字符串“Taro”執行索引掃描。結果,實例化了變量節點34(見圖35中的表格1)。也就是,獲取作為與變量節點$4相對應的OID的<文檔A,4>、<文檔B,4>和<文檔B,7>。
            (2)類似地,使用如圖29所示的這種索引數據對所述字符串“Tanaka”執行索引掃描。結果,實例化了變量節點$5(見圖35的表格2)。也就是,獲取作為與變量節點$5相對應的OID的<文檔A,5>和<文檔B,8>。
            (3)由于實例化了所述變量節點$4和$5,執行結構掃描以實例化屬于比這些變量節點更高等級的變量節點。
            參考圖33的流程圖描述結構掃描。
            首先,從圖35中的表格1和2,讀取包含在所述對象ID內的與變量節點$4和$5相對應的文檔ID(步驟S121)。
            從所述公共結構化數據存儲裝置112和差分結構化數據存儲裝置113分別讀取與每個文檔ID相對應的差分結構化數據和公共結構化數據(與附加到所述差分結構化數據的管理信息相應)(步驟S122)。
            從與每個文檔ID相對應的所述差分結構化數據和公共結構化數據,重構與每個文檔ID相對應的結構化數據(步驟S123)。
            例如,為了重構所述文檔A的結構化數據,以圖10所示的完全重復形式表示的差分結構化數據的子樹被以原始展開的形式表示,從而重構如圖7所示的這種結構化數據。
            而且,為了重構所述文檔B的結構化數據,以圖15中所示的完全重復形式表示的差分結構化數據的子樹被以原始展開的形式表示,并且消除了具有指示檢測數量是零的屬性信息“0”的節點“摘要”。結果,重構了如圖12所示的這種結構化數據。
            隨后,從在表格1中的每個對象數據項開始,向上遍歷每個重構文檔的結構化數據,從而檢測和在所述查詢圖表上的高等級變量節點相同的節點(步驟S124)。
            如果和在所述查詢圖表上的高等級變量節點相同的節點是不定節點,由于不能確定所述不定節點的存儲槽ID(在步驟S125為否),程序進行到步驟S127。相反,如果和在所述查詢圖表上的高等級變量節點相同的節點是固定節點,由于可以從所述結構化數據確定所述固定節點的存儲槽ID(在步驟S125為是),程序進行到步驟S126。
            現在將給出用于判斷是否可以在步驟S125確定所述存儲槽ID的方法的說明。如先前描述的,所述文檔對象存儲單元35以對象數據數組形式存儲每個文檔。分配給數組中各個元素的位置信息項是存儲槽ID。如圖30所示,與所述公共結構化數據的各個節點相對應的對象數據項是以從所述數組的最先的數據項開始的次序保存的(從所述差分結構化數據的最左邊節點開始,以及從所述差分結構化數據的最高等級節點開始)。然后,存儲在所述文檔樹內的不定節點或正文節點。
            通過遍歷從所述根節點開始的重構的結構化數據,獲取除不定節點“?”之外的節點的檢測數量的總和。如果檢測到若干次高等級的節點(例如,2*),則執行考慮到所述高等級節點的檢測數量的總和計算。如果存儲槽ID大于所述總和,則不能確定所述存儲槽ID。
            例如在圖23的文檔C情況下,除所述不定節點“姓”外,檢測到所述元素“標題”一次,也檢測到所述元素“作者們”一次,檢測到所述元素“作者”兩次,檢測到屬于每個元素“作者”的元素“名”一次,并且檢測到所述元素“關鍵詞”一次。因此,所述文檔C的全部節點的檢測總數由以下給出1+1+2×(1+1)+1=7因此,不能確定高于“7”的存儲槽ID。
            在步驟S126,計算當向下跟隨每個結構數據項時所獲取的存儲槽ID。例如,可以通過計算存在于從每個結構數據項的根節點到所述的范圍中的所述對象數據項的數量來檢測特定節點的存儲槽ID。
            在步驟S127,為了檢測每個所獲取節點的存儲槽ID,搜索與每個文檔ID相對應并且保存在所述文檔對象數據存儲裝置115中的對象記錄。
            因此,掃描重構的每個結構化數據項。結果,從在圖35內所示與變量節點$4相對應的表格1中獲取在圖35內所示的與變量節點$3相對應的表格3,以及從在圖35內所示并且與變量節點$5相對應的表格2中獲取在圖35內所示并且與變量節點$3相對應的表格4。
            將給出如何從表格1獲取在圖35內所示的與變量節點$3相對應的表格3的說明。在圖34內的變量節點$3與所述節點“作者”有關。參照圖7文檔A所重構的結構化數據,通過從具有存儲槽ID=4的節點“名”向上地跟隨所述結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第四存儲槽中,所述節點“作者”的存儲槽ID是“3”。
            類似地,參照圖12文檔B的重構的結構化數據,通過從具有存儲槽ID=4的節點“名”向上地跟隨所述結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第四存儲槽中,所述節點“作者”的存儲槽ID是“3”。
            類似地,參照圖12文檔B的重構的結構化數據,通過從具有存儲槽ID=7的節點“名”向上地跟隨所述結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第七存儲槽中,所述節點“作者”的存儲槽ID是“6”。
            因此,所述變量節點$3是從表格1來實例化的,如圖35的表格3中所示。也就是,獲取作為與變量節點$3相對應的OID的<文檔A,3>、<文檔B,3>和<文檔B,6>。
            將給出如何從表格2獲取在圖35內所示的與變量節點$3相對應的表格4的說明。在圖34內的變量節點$3與所述節點“作者”有關。參照圖7文檔A的重構的結構化數據,通過從具有存儲槽ID=5的節點“姓”向上地跟隨所述結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第四存儲槽中,所述節點“作者”的存儲槽ID是“3”。
            類似地,參照圖12文檔B所重構的結構化數據,通過從具有存儲槽ID=8的節點“姓”向上地跟隨所述結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第七存儲槽中,所述節點“作者”的存儲槽ID是“6”。
            因此,所述變量節點$3是從表格2來實例化的,如圖35的表格4中所示。也就是,獲取作為與變量節點$3相對應的OID的數據項<文檔A,3>和<文檔B,6>。
            (4)如上述項(2)和(3)所描述的,所述變量節點$3是以不同方式實例化的,如表格3和4所示。隨后聯接表格3和4。特別地,由于表格3和4包含公共OID<文檔A,3>和<文檔B,6>。因此,獲取了如圖35所示的包含這些OID的表格5。
            (5)由于實例化了所述變量節點$4、$5和$3,執行結構掃描以實例化與比這些變量節點更高等級的變量節點$2(“書”)相對應的元素。
            首先,在OID<文檔A,3>上執行如圖33所示的結構掃描。特別地,參照圖7文檔A所重構的結構化數據,規定了作為具有存儲槽ID=3的節點“作者”的更高級節點的節點“書”。所述節點“書”的存儲槽ID是“0”,也就是,所述節點“書”是所述結構化數據的根節點。
            隨后,在OID<文檔B,6>上執行如圖33所示的結構掃描。特別地,參照圖12文檔B的重構的結構化數據,規定了作為具有存儲槽ID=6的節點“作者”的更高級節點的節點“書”。所述節點“書”的存儲槽ID是“0”,也就是,所述節點“書”是所述結構化數據的根節點。
            因此,實例化了所述變量節點$2,如圖35的表格6中所示。也就是,獲取了作為與變量節點$2相對應的OID的<文檔A,0>和<文檔B,0>。
            OID<文檔A,0>和<文檔B,0>是作為搜索結果從所述查詢執行單元42輸出的。所述結果產生單元46基于作為所述搜索結果獲取的OID產生結果數據(見圖36)。
            圖36示出了滿足圖31中所示的查詢數據的結果數據例子。所述結果數據是通過從所述文檔對象數據存儲裝置115讀取不低于包含在圖36表格6內的OID的OID的節點結構化文檔數據的部分或全部來產生的。在圖36內所示的結果數據包含所述文檔A和B。
            如圖36所示的這種搜索數據是從所述請求處理單元102發送到作為所述請求者所述客戶機201的。所述客戶機201在與所述輸出單元205結合的顯示器上顯示所接收的結構化數據。
            圖37示出了所述查詢數據的另一個例子。此查詢數據請求搜索包括在元素“書”中的元素“作者”的列表,所述元素“作者”包括各自的元素“姓”,每個元素“姓”包括字符串“Tanaka”。圖31的查詢數據請求搜索元素“書”的列表,而圖37的查詢數據請求搜索元素“作者”的列表。
            在圖37所示查詢數據的情況下,獲取如圖38所示的這種查詢圖表。
            圖39是有利于基于圖38的查詢圖表解釋搜索處理的視圖。
            (1)由于所述查詢圖表包含值比較標記節點、以及所述術語索引功能“contains”,使用如圖29所示的這種索引數據對所述字符串“Tanaka”執行索引掃描。結果,實例化了所述變量節點$3(見圖39的表格7)。也就是,獲取作為與變量節點$3相對應的OID的<文檔A,5>和<文檔B,8>。
            (2)由于實例化了所述變量節點$3,執行結構掃描以實例化屬于比這些變量節點更高等級的變量節點$2。
            首先,所述文檔A和B的結構數據項是從在所述文檔A和B之間的差分結構化數據、以及從與附加到所述差分結構化數據的管理信息相對應的公共結構化數據中重構的。
            通過從具有存儲槽ID=5的節點“姓”向上地跟隨圖7文檔A的結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第四存儲槽中,所述節點“作者”的存儲槽ID是“3”。
            類似地,通過從具有存儲槽ID=8的節點“姓”向上地跟隨圖12文檔B的結構化數據、來獲取所述節點“作者”。由于這些節點保存在從具有存儲槽ID=0的根節點開始數起的第七存儲槽中,所述節點“作者”的存儲槽ID是“6”。
            因此,實例化了所述變量節點$2,如圖39的表格3中所示。也就是,獲取作為與變量節點$2相對應的OID的數據項<文檔A,3>和<文檔B,6>。
            這兩個OID是滿足圖37所示的查詢數據的搜索結果。
            所述結果產生單元46通過從所述文檔對象數據存儲裝置115讀取不低于包含在圖39表格8內的OID的OID的節點的結構化文檔數據的部分或全部來產生結果數據。圖40所示的所述結果數據包含有屬于具有不低于3的存儲槽ID的節點(具有存儲槽ID=3的節點是第一節點“作者”)的所述文檔A的子文檔,以及屬于具有不低于6的存儲槽ID的節點(具有存儲槽ID=6的節點是第二節點“作者”)的所述文檔B的子文檔。
            如上所述,在所述實施例中,為了將新的結構化文檔數據存儲到所述結構化文檔DB 111里,獲取在公共結構和所述新結構化文檔數據的結構之間的差分結構。所述公共結構是指包括在已經保存在所述結構化文檔DB 111內的每個結構化文檔數據項中、以及包括在所述新結構化文檔數據中的公共結構。可以通過使用所述新結構化文檔數據的結構、更新已經保存在所述結構化文檔DB 111中的每個結構化文檔數據項的公共結構,來獲取此差分結構。根據所述差分結構排列的所述新結構化文檔數據的元素的數組,存儲在所述文檔對象數據存儲裝置115中。
            在上述實施例中,當存儲新的結構化文檔數據時,使用所述新結構化文檔數據的結構更新所述公共結構。而且,存儲所更新的公共結構和所述新結構化文檔數據的結構之間的差分結構以及所述新結構化文檔數據的元素的數組。因此,可以顯著地減少存儲有關新結構化文檔數據所必須的數據數量。而且,由于所述數組的每個元素的位置與所述差分結構中每個元素的位置對應,可以從所述新結構化文檔數據的結構容易地確定任何元素的存儲區。
            另外,當為了檢測所期望的元素(由搜索條件指定)而搜索保存在所述結構化文檔DB 111中的結構化文檔數據項時,所述結構化文檔數據項的結構是從在所述結構化文檔數據項的結構和覆蓋所述結構化文檔數據項的結構以及存儲在所述DB 111中的其它結構化文檔數據項的結構的公共結構之間的差分結構重構的。從所重構的結構,確定所期望的元素。所述文檔對象數據存儲裝置115存儲根據所述差分結構排列的所述結構化文檔數據項的元素的數組。在所述數組內的所期望元素的位置信息(存儲槽ID)是基于在所重構的結構內的所期望元素的位置來檢測的。
            如上所述,在所述實施例中,保存在所述結構文檔DB 111中的每個結構化文檔數據項的結構被重構和遍歷、以判斷其是否包含期望的元素。而且,可以用少數次數對數據的參考來檢測所期望元素的存儲區(存儲槽ID)。結果,對于結構化文檔數據的搜索可以以高速執行。
            所述實施例的流程圖說明了按照本發明實施例的方法和系統。應當理解所述流程圖例圖的每個框圖、以及所述流程圖例圖中框圖的組合,可以由計算機程序指令來實現。這些計算機程序指令可以加載在計算機或其它可編程設備上、以產生機器,使得運行在計算機或其它可編程設備上的所述指令創建用于實現在所述流程圖框圖或多個框圖內指定的功能的裝置。這些計算機程序指令也可能保存在計算機可讀的存儲器上,其可以直接由計算機或其它可編程設備以特定方式運行,使得保存在所述計算機可讀的存儲器中的指令產生制品,包括實現在所述流程圖框圖或多個框圖內規定的功能的指令裝置。這些計算機程序指令也可以加載在計算機或其它可編程設備上,以引起在計算機或其它可編程設備上執行的一系列操作步驟,以使計算機可編程設備提供產生對于實現在所述流程圖框圖或多個框圖內指定的功能的步驟。
            所屬領域技術人員將容易想到附加的優點和修改。因此,本發明廣義上不局限于在這里所示和描述的細節和典型的實施例。因此,可以在不脫離由所附權利要求及其等同物限定的總的發明構思的精神或范圍下,可以進行多種修改。
            權利要求
            1.一種結構化文檔管理設備,包括數據存儲裝置,其存儲多個分別包括多個元素的結構化文檔數據項;公共結構存儲裝置,其存儲包括多個包括在所述結構化文檔數據項中的結構的公共結構;第一獲取單元,其被配置來獲取新的結構化文檔數據項;更新單元,其被配置來將所述公共結構更新為新的公共結構,該新的公共結構包括所述結構和包括在所述新的結構化文檔數據項中的多個結構;第二獲取單元,其被配置來獲取所述新的公共結構和所述新的結構化文檔數據項的結構之間的差分結構;差分結構存儲裝置,其存儲所述差分結構;以及存儲單元,其被配置來將所述新的結構化文檔數據項的元素的數組存儲到所述數據存儲裝置里,所述數組是基于所述差分結構排列的。
            2.根據權利要求1的設備,其中所述第二獲取單元被配置來獲取所述差分結構,所述差分結構包括指示所述新的公共結構的每個元素是否存在的信息和指示檢測到多少次所述新的結構化文檔數據項的子結構的信息。
            3.根據權利要求1的設備,其中所述存儲單元被配置來存儲所述數組,指示所述新的結構化文檔數據項的每個元素在所述數組中的位置的位置信息是指示所述每個元素的標識符。
            4.一種搜索設備,包括存儲裝置,其存儲多個分別包括多個元素的結構化文檔數據項;獲取單元,其被配置來獲取用于搜索包括在所述元素中的期望的元素的搜索條件;以及搜索單元,其被配置來從包括在所述結構化文檔數據項中的特定結構化文檔數據項中搜索所述期望的元素,所述搜索單元包括重構單元,其被配置來基于所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構,所述公共結構包括在所述結構化文檔數據項中的多個結構、還包括所述特定結構化文檔數據項的結構;和檢測單元,其被配置來從所述重構的結構檢測所述期望的元素。
            5.根據權利要求4的設備,其中所述存儲裝置被配置來存儲所述特定結構化文檔數據項的元素數組,所述數組是基于所述差分結構排列的;并且所述搜索單元被配置來基于所述期望元素在所述重構的結構中的位置,獲取指示所述期望元素在所述數組中的位置的位置信息。
            6.一種方法,包括將新的結構化文檔數據項存儲到存儲裝置里,該存儲裝置存儲有多個分別包括多個元素的結構化文檔數據項;獲取包括多個結構的公共結構,所述多個結構包括在所述結構化文檔數據項和所述新的結構化文檔數據項中;獲取所述公共結構和所述新的結構化文檔數據項的結構之間的差分結構;以及將所述新的結構化文檔數據項的元素的數組存儲到所述存儲裝置里,所述數組是基于所述新的差分結構排列的。
            7.一種方法,包括從包括在多個分別包括多個元素的結構化文檔數據項中的特定結構化文檔數據項中搜索期望的元素;基于所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構,所述公共結構包括在所述結構化文檔數據項中的多個結構,還包括所述特定結構化文檔數據項的結構;以及從所述重構的結構檢測所述期望的元素。
            8.根據權利要求7的方法,還包括基于所述期望元素在所述重構結構中的位置,來獲取指示所述期望元素在數組中的位置的位置信息,所述數組是由基于所述差分結構排列的所述特定結構化文檔數據項的元素形成的。
            9.一種存儲在由計算機讀取的媒質上的程序,所述程序包括用于指示所述計算機存儲多個分別包括多個元素的結構化文檔數據項的裝置,新的結構化文檔數據項通過所述程序的指令被存儲;用于指示所述計算機獲取包括多個結構的公共結構的裝置,所述多個結構包括在所述結構化文檔數據項和所述新的結構化文檔數據項中;用于指示所述計算機獲取所述公共結構和所述新的結構化文檔數據項的結構之間的差分結構的裝置;以及用于指示所述計算機將所述新的結構化文檔數據項的元素的數組存儲到所述存儲裝置里的裝置,所述數組是基于所述新的差分結構排列的。
            10.一種存儲在由計算機讀取的媒質上的程序,所述程序包括用于指示所述計算機存儲多個分別包括多個元素的結構化文檔數據項的裝置,所述程序用作從包括在所述結構化文檔數據項中的特定結構化文檔數據項中搜索期望的元素的搜索設備;用于指示所述計算機基于在所述特定結構化文檔數據項的結構和公共結構之間的差分結構,來重構所述特定結構化文檔數據項的結構的裝置,所述公共結構包括在所述結構化文檔數據項中的多個結構,還包括所述特定結構化文檔數據項的結構;以及用于指示所述計算機從所述重構的結構檢測所述期望元素的裝置。
            全文摘要
            本發明涉及結構化文檔管理設備、搜索設備、存儲和搜索方法及程序。一種結構化文檔管理設備,包括存儲有多個分別包括多個元素的結構化文檔數據項的數據存儲器;存儲包括在所述結構化文檔數據項內的多個結構的公共結構的公共結構存儲器;被配置來獲取新的結構化文檔數據項的第一獲取單元;被配置來將公共結構更新為包括所述結構和包括在所述新結構化文檔數據項內的多個結構的新公共結構的更新單元;被配置來獲取所述新公共結構和所述新結構化文檔數據項的結構之間的差分結構的第二獲取單元;存儲差分結構的差分結構存儲器;以及被配置來將新的結構化文檔數據項的元素的數組存儲到數據存儲器里的存儲單元,所述數組是基于差分結構排列的。
            文檔編號G06F17/30GK1722138SQ200510084628
            公開日2006年1月18日 申請日期2005年7月15日 優先權日2004年7月15日
            發明者服部雅一 申請人:株式會社東芝
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品