專利名稱:搜索處理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于數(shù)據(jù)庫的搜索處理技術(shù)。
背景技術(shù):
例如,USP6,643,644公開了如下技術(shù)。以下,特別地,對其中存在如圖1所示的關(guān)系數(shù)據(jù)庫(RDB)的數(shù)據(jù)的情況進(jìn)行說明。圖1示出了銷售歷史表的一部分,該銷售歷史表包括19條記錄,這些記錄具有各項(xiàng)目(屬性)(這些項(xiàng)目是客戶ID、日期和時(shí)間、產(chǎn)品、價(jià)格以及商店代號)的相應(yīng)項(xiàng)目值。順便指出,為描述方便起見,“rowid”表示行號(也被成為記錄號)。
在上述美國專利中將如圖1所示的數(shù)據(jù)保持為如圖2所示的數(shù)據(jù)。即,該數(shù)據(jù)包括ROOT數(shù)組9001;與客戶ID的項(xiàng)目有關(guān)的POS數(shù)組9002和值表9003;與日期和時(shí)間的項(xiàng)目有關(guān)的POS數(shù)組9004和值表9005;以及與產(chǎn)品名稱的項(xiàng)目有關(guān)的POS數(shù)組9006和值表9007。ROOT數(shù)組9001是保持待在各POS數(shù)組中參考的行號的數(shù)組。對于顧客ID,值表9003唯一地標(biāo)識了顧客ID的項(xiàng)目值(001到007),并且POS數(shù)組9002在每個(gè)行(即,位置)中保持指向值表9003的待針對如下紀(jì)錄來參考的行的指針,所述記錄的記錄號被存儲在ROOT數(shù)組9001中的相對應(yīng)的行中。例如,當(dāng)要處理POS數(shù)組9002的第一行時(shí),這是記錄1的數(shù)據(jù),在POS數(shù)組9002中保持的“1”通過參考值表9003的第一行來表示客戶ID“001”。類似地,對于日期和時(shí)間,值表9005唯一地標(biāo)識了日期和時(shí)間的項(xiàng)目值(3月1日10:00到3月9日19:00),并且POS數(shù)組9004在每個(gè)行(即,位置)中保持指向值表9005的待針對如下紀(jì)錄來參考的行的指針,所述記錄的記錄號被存儲在ROOT數(shù)組9001中的相對應(yīng)的行中。同樣,對于產(chǎn)品名稱,值表9007唯一地標(biāo)識了產(chǎn)品名稱的項(xiàng)目值(DVD軟件到電冰箱),并且POS數(shù)組9006在每個(gè)行(即,位置)中保持指向值表9007的待針對如下紀(jì)錄來參考的行的指針,所述記錄的記錄號被存儲在ROOT數(shù)組9001中的相對應(yīng)的行中。
即,采用了這樣的數(shù)據(jù)結(jié)構(gòu),在該數(shù)據(jù)結(jié)構(gòu)中,對于各項(xiàng)目保持有保持有唯一地標(biāo)識項(xiàng)目值的項(xiàng)目值編號與項(xiàng)目值之間的關(guān)系的值表,和按記錄的次序存儲有指定了項(xiàng)目值編號的信息的項(xiàng)目值編號指定信息數(shù)組。
通過保持這種數(shù)據(jù)結(jié)構(gòu),例如,在提取其客戶ID為“001”的記錄的情況下,在值表9003中識別出其中保持有“001”的行的行號“1”,并且POS數(shù)組9002中的保持有所識別出的行號“1”的多個(gè)行的行號“1”、“2”、“10”以及“14”是待提取的記錄號。
這里,在圖1所示的銷售歷史表中,考慮提取如下客戶的搜索該客戶購買了“HDD記錄器”、“DVD播放器”或“TV(電視機(jī))”,然后購買了任何“軟件”,再購買了“DVD-R”或“CD-RW”。
盡管上述專利未直接公開這種搜索方法,但是通常必須執(zhí)行以下過程。首先,針對各客戶ID并按日期和時(shí)間次序?qū)?shù)據(jù)進(jìn)行排序。對于如圖1所示的RDB,在存在巨大數(shù)據(jù)量的情況下排序本身就是困難的。然而,當(dāng)使用如圖2所示的數(shù)據(jù)結(jié)構(gòu)時(shí),可以對數(shù)據(jù)進(jìn)行排序,因?yàn)榻档土藬?shù)據(jù)量。為了使得容易理解,將按圖1的格式的排序結(jié)果示于圖3,而將只包括記錄號的排序結(jié)果示于圖4。將圖4的排序結(jié)果保持為SET數(shù)組9011,按記錄1、記錄2、記錄10以及記錄14...的次序排列這些記錄。也將該記錄號稱為SETID。
然后,作為第一個(gè)步驟,提取與“HDD記錄器”、“DVD播放器”或“TV”相對應(yīng)的記錄。在這種情況下,如圖5所示,按SET數(shù)組9011的序次,參考產(chǎn)品名稱的POS數(shù)組9006以讀出相對應(yīng)的項(xiàng)目值編號,并在表9007中識別出位于該項(xiàng)目值編號的位置處的項(xiàng)目值,以判斷是否滿足上述第一條件。SET數(shù)組9011中的第1個(gè)記錄號是“1”,因此識別出“5”,它是POS數(shù)組9006中的第1個(gè)項(xiàng)目值編號。然后,讀出“TV”,它是表9007中的第5個(gè)項(xiàng)目值。因此,滿足上述第一條件,并提取出記錄號“1”。例如,SET9011中的第3個(gè)記錄號是“10”,因此識別出“1”,它是POS數(shù)組9006中的第10個(gè)項(xiàng)目值編號。然后,讀出“DVD軟件”,它是表9007中的第1個(gè)項(xiàng)目值。因此,不滿足上述第一條件,因而不提取記錄號“10”。重復(fù)這種處理。
然后,得到了類似于圖6所示的數(shù)組9021的SETID序列。由于僅通過該數(shù)組不容易理解具體內(nèi)容,因此將所提取的記錄的具體內(nèi)容示于表9022中。然而,由于僅通過該數(shù)據(jù)并不知道是否滿足第二條件,因此必須再次參考SET數(shù)組9011的數(shù)據(jù)。
具體來說,當(dāng)從圖6的數(shù)組9021獲得記錄號時(shí),在圖4的SET數(shù)組9011中識別出下一排列的記錄號。例如,在記錄號“1”的情況下,識別出記錄號“2”。然后,參考產(chǎn)品名稱的POS數(shù)組9006以讀出位于所識別出的記錄號的位置處的項(xiàng)目值編號,并在表9007中識別出位于該項(xiàng)目值編號的位置處的項(xiàng)目值,以判斷是否滿足上述第二條件。當(dāng)識別出記錄號“2”時(shí),讀出“4”,它是POS數(shù)組9006中的第2個(gè)項(xiàng)目值編號。然后,識別出“HDD記錄器”(它是位于項(xiàng)目值編號“4”的位置處的項(xiàng)目值),并將其與作為第二條件的“軟件”進(jìn)行比較。在此情況下,判定不滿足第二條件。類似地,當(dāng)要處理數(shù)組9021中的第2個(gè)記錄號“2”時(shí),SET數(shù)組9011中的下一記錄號是“10”。根據(jù)該記錄號“10”讀出POS數(shù)組9006的第10個(gè)項(xiàng)目值編號“1”,然后在表9007中識別出“DVD軟件”(它是位于項(xiàng)目值編號“1”的位置處的項(xiàng)目值),并將其與作為第二條件的“軟件”進(jìn)行比較。在此情況下,判定滿足第二條件。
在圖7中總結(jié)了上述處理。圖7示出了下一記錄的SET數(shù)組9031、對應(yīng)數(shù)據(jù)表9032、以及產(chǎn)品名稱這一項(xiàng)目的POS數(shù)組9006和值表9007。在下一記錄的SET數(shù)組9031和數(shù)據(jù)表9032中,在陰影行中不滿足第二條件,結(jié)果,提取記錄號“10”、“9”以及“17”。
順便指出,盡管略去了描述,但是由于同一客戶必須按第一到第三條件的次序滿足這些條件,因此一個(gè)客戶必須具有至少3條記錄,因而當(dāng)不存在下一條記錄時(shí),不處理這種客戶。例如,下一記錄的SET數(shù)組9031中的最后一行表示不存在下一條記錄的情況,因此記錄有“-”。
由此,即使提取了存儲有滿足第一條件的記錄號的數(shù)組9021,也必須再次訪問SET數(shù)組9011以提取下一記錄,還必須再次確認(rèn)下一記錄的SET數(shù)組9031是否滿足第二條件。
此外,為了確認(rèn)是否滿足第三條件,必須再次參考SET數(shù)組9011的數(shù)據(jù)。
具體來說,對于記錄號“10”、“9”以及“17”(在圖7所示的下一記錄的SET數(shù)組9031中未對它們加陰影)中的每一個(gè),在SET數(shù)組9011中再次識別出下一排列的記錄號。例如,如圖8的再下一記錄的SET數(shù)組9041所示,記錄號“10”的下一記錄號是“14”,記錄號“9”的下一記錄號是“18”,記錄號“17”的下一記錄號不存在,如圖8所示。
接下來,通過查詢產(chǎn)品名稱的POS數(shù)組9006,讀出位于所識別出的記錄號的位置處的項(xiàng)目值編號,并識別出位于所讀出的項(xiàng)目值編號的位置處的項(xiàng)目值以判斷是否滿足上述第三條件。即,在POS數(shù)組9006中讀出位于記錄號“14”的位置處的項(xiàng)目值編號“2”,在值表9007中識別出與該項(xiàng)目值編號“2”相對應(yīng)的項(xiàng)目值“DVD-R”,并將其與上述第三條件進(jìn)行比較,并判定該記錄滿足第三條件。此外,在POS數(shù)組9006中讀出位于記錄號“18”的位置處的項(xiàng)目值編號“2”,在值表9007中識別出與該項(xiàng)目值編號“2”相對應(yīng)的項(xiàng)目值“DVD-R”,并將其與上述第三條件進(jìn)行比較,并判定該記錄滿足第三條件。
即,提取了關(guān)于客戶ID“1”的記錄號序列“2”、“10”以及“14”,并提取了關(guān)于客戶ID“4”的記錄號序列“6”、“9”以及“18”。
由此,即使數(shù)組(即,下一記錄的SET數(shù)組9031的一部分)存儲有滿足第二條件的記錄號,也必須再次訪問SET數(shù)組9011以提取下一條記錄,并且還必須再次確認(rèn)再下一記錄的SET數(shù)組9041是否滿足第三條件。
盡管在記錄數(shù)小的情況下執(zhí)行匹配的次數(shù)不會增加太多,但是必須針對每個(gè)記錄判斷許多次它是否滿足所述多個(gè)條件。因此,存在當(dāng)記錄數(shù)巨大時(shí)執(zhí)行匹配的次數(shù)變得巨大的問題。
順便指出,JP-A-2000-20527公開了如下技術(shù)基于搜索的命中率,通過將行位置信息的存儲方法切換成對條件搜索的搜索結(jié)果的重用以使必要區(qū)域最小化,來提高搜索速度。具體來說,當(dāng)數(shù)據(jù)庫管理程序在進(jìn)行搜索處理時(shí)在搜索結(jié)果管理表中找出了與正在處理的搜索相匹配的搜索條件時(shí),通過查詢相對應(yīng)的搜索結(jié)果位置信息,將針對該匹配的搜索條件對數(shù)據(jù)庫的搜索當(dāng)作不必要的搜索。然而,該公報(bào)不能解決上述問題。
此外,JP-A-2005-251002公開了如下技術(shù)其中源數(shù)據(jù)庫的結(jié)構(gòu)是常規(guī)的,即使在已生成了搜索結(jié)果文件之后,也可以執(zhí)行針對增加了更多條件等的檢索的再搜索。具體來說,從數(shù)據(jù)庫中提取與預(yù)定搜索條件相對應(yīng)的數(shù)據(jù),并生成包括表示所提取的數(shù)據(jù)在數(shù)據(jù)庫中的存儲位置的定位符的搜索結(jié)果文件。在進(jìn)行再搜索時(shí),通過使用這些定位符來查詢數(shù)據(jù)庫,獲得再搜索的數(shù)據(jù),并提取與再搜索條件相對應(yīng)的數(shù)據(jù)以生成新搜索結(jié)果文件。該公開也不能解決上述問題。
如上所述,常規(guī)技術(shù)不能減少針對巨多記錄而執(zhí)行的匹配次數(shù),以提高提取滿足多個(gè)有序搜索條件的記錄序列的處理的處理速度,當(dāng)提取購買歷史等時(shí)會出現(xiàn)這種處理。
發(fā)明內(nèi)容
因此,本發(fā)明的一個(gè)目的是提供一種技術(shù),該技術(shù)用于在提取滿足有序多個(gè)搜索條件的多個(gè)記錄序列時(shí)減少對記錄的匹配次數(shù)。
根據(jù)本發(fā)明的搜索處理方法包括以下步驟分配步驟,基于包括多個(gè)有序搜索條件的搜索指令,針對特定項(xiàng)目的每個(gè)項(xiàng)目值分配標(biāo)記,并將這些標(biāo)記作為標(biāo)記定義數(shù)據(jù)存儲在存儲裝置中,其中,每個(gè)搜索條件都指定了所述特定項(xiàng)目的特定值;排序步驟,根據(jù)預(yù)定規(guī)則(例如,時(shí)間順序)對存儲在數(shù)據(jù)庫中的待搜索的多個(gè)記錄進(jìn)行排序;識別步驟,通過使用存儲在所述存儲裝置中的所述標(biāo)記定義數(shù)據(jù),按排序后的所述多個(gè)記錄的次序識別出與待處理的每個(gè)記錄中的所述特定項(xiàng)目的項(xiàng)目值相對應(yīng)的標(biāo)記;判斷步驟,在按排序后的所述多個(gè)記錄的所述次序識別所述標(biāo)記的所述識別步驟的處理中,判斷所述識別出的多個(gè)標(biāo)記的出現(xiàn)模式(即,所述多個(gè)標(biāo)記的出現(xiàn)次序、檢測的連續(xù)性等)是否遵循所述搜索指令;以及輸出步驟,輸出與在被判定為遵循所述搜索指令的所述多個(gè)標(biāo)記的所述出現(xiàn)模式中所包括的所述多個(gè)標(biāo)記有關(guān)的多個(gè)記錄的數(shù)據(jù)。
通過執(zhí)行這種處理,將常規(guī)技術(shù)中的頻繁地判斷數(shù)據(jù)庫中的記錄是否與搜索條件相匹配的處理轉(zhuǎn)換成如下處理基于搜索指令將數(shù)據(jù)庫中的記錄組轉(zhuǎn)換成標(biāo)記序列,并確認(rèn)多個(gè)標(biāo)記的出現(xiàn)模式是否遵循搜索指令。由此,減少了匹配處理的次數(shù),并且整個(gè)處理變得高效。
此外,所述分配步驟可以包括以下步驟識別出與特定搜索條件中的所述特定項(xiàng)目的所述特定值相對應(yīng)并被包括在所述數(shù)據(jù)庫的所述記錄中的所述特定項(xiàng)目的項(xiàng)目值;和將根據(jù)所述特定搜索條件的所述次序的一標(biāo)記分配給所述識別出的項(xiàng)目值。通常,必須針對同一記錄判斷許多次包括在搜索條件中的項(xiàng)目值是否與記錄中的項(xiàng)目值一致或部分地一致。然而,當(dāng)執(zhí)行對項(xiàng)目值的上述識別時(shí),即使在最大的情況下,也將在項(xiàng)目值之間的比較次數(shù)限制為(包括在搜索條件中的項(xiàng)目值的種類數(shù))×(數(shù)據(jù)庫中的項(xiàng)目值的種類數(shù))次。因此,處理簡化了并變得高效。此外,當(dāng)執(zhí)行上述分配時(shí),所述標(biāo)記代表了次序。因此,變得容易判斷標(biāo)記的出現(xiàn)模式。
此外,所述判斷步驟可以包括以下步驟根據(jù)所述識別出的多個(gè)標(biāo)記判斷是否發(fā)生了根據(jù)所述次序定義的多個(gè)狀態(tài)之間的轉(zhuǎn)變;和當(dāng)所述多個(gè)狀態(tài)之間發(fā)生了所述轉(zhuǎn)變時(shí)判斷是否達(dá)到了最終狀態(tài)。由此,通過對狀態(tài)轉(zhuǎn)變進(jìn)行管理,變得可以正確并簡單地判斷多個(gè)標(biāo)記的出現(xiàn)是否遵循搜索指令。此外,通過適當(dāng)?shù)囟x在多個(gè)狀態(tài)之間的轉(zhuǎn)變的條件,可以處理各種搜索指令。
順便指出,所述預(yù)定規(guī)則是包括如下步驟的條件針對由所述搜索指令指定的每個(gè)組項(xiàng)目進(jìn)行排序,并按時(shí)間順序進(jìn)行排序。在此情況下,上述判斷步驟可以包括以下步驟在所述組項(xiàng)目的同一項(xiàng)目值的范圍內(nèi)判斷所述多個(gè)標(biāo)記的出現(xiàn)模式。對于對客戶購買歷史等的搜索,執(zhí)行這種處理。
此外,上述數(shù)據(jù)庫可以具有保持有在唯一地標(biāo)識了項(xiàng)目值的項(xiàng)目值編號與所述項(xiàng)目值之間的關(guān)系的表,和存儲有按所述多個(gè)記錄的次序指定了所述項(xiàng)目值編號的信息的項(xiàng)目值編號指定信息數(shù)組。通過使用這種數(shù)據(jù)結(jié)構(gòu),可以簡單地并高速地執(zhí)行所述排序步驟。
此外,所述標(biāo)記可以是如下位串,在該位串中在相對應(yīng)的搜索條件的所述次序的位位置處設(shè)置有“1”。變得可以更高速地判斷標(biāo)記的出現(xiàn)模式。
順便指出,當(dāng)針對待搜索的所述多個(gè)記錄(它們被存儲在所述數(shù)據(jù)庫中)只執(zhí)行一次上述識別所述標(biāo)記的步驟時(shí),可以減少執(zhí)行匹配的次數(shù)。
順便指出,可以創(chuàng)建用于使得計(jì)算機(jī)執(zhí)行根據(jù)本發(fā)明的本方法的程序。將所述程序存儲在存儲介質(zhì)或存儲裝置中,如軟盤、CD-ROM、磁光盤、半導(dǎo)體存儲器或硬盤。此外,在某些情況下可以通過網(wǎng)絡(luò)將所述程序作為數(shù)字信號進(jìn)行發(fā)布。將正在處理的數(shù)據(jù)臨時(shí)存儲在諸如計(jì)算機(jī)存儲器的存儲裝置中。
圖1是示出銷售歷史表的示例的圖;圖2是示出常規(guī)技術(shù)的數(shù)據(jù)結(jié)構(gòu)的圖;圖3是示出排序后的銷售歷史表的示例的圖;圖4是示出排序后的SET數(shù)組的示例的圖;圖5是示出常規(guī)技術(shù)中的搜索處理的圖;圖6是示出滿足第一條件的記錄組的圖;圖7是示出常規(guī)技術(shù)中的搜索處理的圖;圖8是示出常規(guī)技術(shù)中的搜索處理的圖;圖9是示出根據(jù)本發(fā)明實(shí)施例的系統(tǒng)的概要的圖;圖10是示出搜索指令的輸入屏面示例的圖;圖11是示出根據(jù)本發(fā)明實(shí)施例的主處理流程的圖;圖12是示出事件判斷處理的處理流程的圖;
圖13是示出事件管理表的示例的圖;圖14是示出根據(jù)本發(fā)明實(shí)施例的搜索處理的處理流程的第一部分的圖;圖15是示出事件歷史條件表的初始狀態(tài)的圖;圖16是示出事件歷史條件表的下一狀態(tài)的圖;圖17是示出事件歷史條件表的再下一狀態(tài)的圖;圖18是示出事件標(biāo)記表的示例的圖;圖19是示出狀態(tài)轉(zhuǎn)變的示例的圖;圖20是示出根據(jù)本發(fā)明實(shí)施例的搜索處理的處理流程的第二部分的圖;圖21是示出事件標(biāo)記表的使用方法的圖;圖22是示出所提取的事件表的示例的圖;圖23是示出根據(jù)本發(fā)明實(shí)施例的事件標(biāo)記和狀態(tài)轉(zhuǎn)變的具體示例的圖;圖24是示出輸出結(jié)果的示例的圖;以及圖25是計(jì)算機(jī)的功能框圖。
具體實(shí)施例方式
圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)概要圖。例如,將諸如局域網(wǎng)(LAN)的網(wǎng)絡(luò)1連接到一個(gè)或更多個(gè)用戶終端3和對數(shù)據(jù)庫(DB)進(jìn)行管理的DB服務(wù)器5。這里,示出了通過一臺計(jì)算機(jī)實(shí)現(xiàn)的DB服務(wù)器5的示例。然而,可以通過多臺計(jì)算機(jī)來實(shí)現(xiàn)它。此外,DB服務(wù)器5不僅可以管理一個(gè)數(shù)據(jù)庫,而且可以管理多種數(shù)據(jù)庫。
在本實(shí)施例中,假設(shè)對多個(gè)記錄進(jìn)行排序。因此,從處理速度和存儲容量的觀點(diǎn)來看常規(guī)RDB是不實(shí)際的,因此使用如圖2所示的數(shù)據(jù)結(jié)構(gòu)(以下,將它稱為快速結(jié)構(gòu))來進(jìn)行數(shù)據(jù)管理。將由該快速結(jié)構(gòu)管理的數(shù)據(jù)存儲在快速結(jié)構(gòu)數(shù)據(jù)存儲器56中。
DB服務(wù)器5包括搜索指令接收器51,其通過網(wǎng)絡(luò)1從用戶終端3接收搜索指令;搜索指令數(shù)據(jù)存儲器52,其存儲與由搜索指令接收器51接收的搜索指令有關(guān)的數(shù)據(jù);事件判斷處理器53,其通過使用存儲在搜索指令數(shù)據(jù)存儲器52中的數(shù)據(jù)來執(zhí)行事件判斷處理;事件管理表存儲器54,其存儲事件判斷處理器53的處理結(jié)果;搜索預(yù)處理器55,其通過使用存儲在搜索指令數(shù)據(jù)存儲器52、事件管理表存儲器54以及快速結(jié)構(gòu)數(shù)據(jù)存儲器56中的數(shù)據(jù)來執(zhí)行處理;事件歷史條件表存儲器57,其存儲作為搜索預(yù)處理器55的處理結(jié)果的事件歷史條件表;排序結(jié)果存儲器58,其存儲作為對搜索預(yù)處理器55的處理結(jié)果的排序結(jié)果的數(shù)據(jù);搜索處理器59,其利用快速結(jié)構(gòu)數(shù)據(jù)存儲器56、排序結(jié)果存儲器58以及事件歷史條件表存儲器57,通過根據(jù)來自搜索預(yù)處理器55的指令來執(zhí)行搜索處理,以提取有關(guān)數(shù)據(jù);搜索結(jié)果存儲器60,其存儲搜索處理器59的處理結(jié)果;以及搜索結(jié)果輸出單元61,其將存儲在搜索結(jié)果存儲器60中的數(shù)據(jù)輸出給請求源的用戶終端3。順便指出,搜索處理器59包括狀態(tài)轉(zhuǎn)變管理器591,該狀態(tài)轉(zhuǎn)變管理器591基于搜索預(yù)處理器55的設(shè)置執(zhí)行對狀態(tài)轉(zhuǎn)變的管理。
接下來,通過利用圖10到24對圖9所示的系統(tǒng)的操作進(jìn)行說明。順便指出,原樣使用針對常規(guī)技術(shù)描述的具體示例,來用于對本實(shí)施例的描述。即,在快速結(jié)構(gòu)數(shù)據(jù)存儲器56中存儲有如圖2所示的數(shù)據(jù)結(jié)構(gòu),并考慮提取如下客戶的搜索該客戶首先購買了“HDD記錄器”、“DVD播放器”、或“TV(電視機(jī))”,然后購買了任何“軟件”,最后購買了“DVD-R”或“CD-RW”。順便指出,根據(jù)快速結(jié)構(gòu)的數(shù)據(jù)保持與如圖1所示的銷售歷史表相同的內(nèi)容。
首先,用戶終端3的用戶對用戶終端3進(jìn)行操作以訪問DB服務(wù)器5,并使得它在顯示裝置上顯示搜索指令的輸入屏面。例如,在顯示裝置上顯示如圖10所示的屏面。圖10的屏面示例包括顯示/指定欄301,其具有待搜索的表的名稱、類型以及起始SETID和記錄數(shù)量;提取條件指定欄302,其指定在進(jìn)行排序時(shí)待分組的組項(xiàng)目、作為待排序項(xiàng)目的排序項(xiàng)目、作為搜索條件的事件;事件次序條件指定欄303,其在提取條件指定欄302中指定了多個(gè)事件的情況下指定在該多個(gè)事件之間的次序關(guān)系;以及提取項(xiàng)目指定欄304,其指定針對滿足檢索條件的記錄要提取的項(xiàng)目。順便指出,根據(jù)上述條件,在作為提取條件的事件1的欄中,指定產(chǎn)品名稱是“TV”、“HDD記錄器”或“DVD播放器”,作為條件。類似地,在事件2的欄中,指定產(chǎn)品名稱類似于“軟件”作為條件,在事件3的欄中,指定產(chǎn)品名稱是“DVD-R”或“CD-RW”作為條件。對于事件次序,可以指定“升序”、“降序”、“所有組合(所有序次)”、“任意指定”等。根據(jù)上述條件,選擇“升序”。順便指出,“任意指定”可以指定各種次序條件,“E1,(E2,E3)”意味著指定“E1”、“E2”以及“E3”的次序和“E1”、“E3”以及“E2”的次序。
用戶在如圖10所示的屏面中指定所需條件,并點(diǎn)擊確定按鈕305。然后,用戶終端3接受該指令,并將輸入數(shù)據(jù)作為搜索指令發(fā)送給DB服務(wù)器5。該搜索指令包括待搜索數(shù)據(jù)、提取條件(組項(xiàng)目、排序項(xiàng)目以及事件組)、提取次序條件以及提取項(xiàng)目。順便指出,盡管在圖10中不可以指定其他條件,但是可以增加其他條件。
DB服務(wù)器5的搜索指令接收器51接收來自用戶終端3的搜索指令,并將與該搜索指令有關(guān)的數(shù)據(jù)存儲在搜索指令數(shù)據(jù)存儲器52中(圖11步驟S1)。然后,事件判斷處理器53使用存儲在搜索指令數(shù)據(jù)存儲器52中的與搜索指令有關(guān)的數(shù)據(jù)來執(zhí)行事件判斷處理(步驟S3)。將通過利用圖12和13對該事件判斷處理進(jìn)行說明。首先,事件判斷處理器53識別出存儲在搜索指令數(shù)據(jù)存儲器52中的多個(gè)事件之中的未處理事件(步驟S11),從該未處理事件中提取項(xiàng)目名和項(xiàng)目值的組,并將所提取的組存儲在事件管理表中(步驟S13)。圖13示出了存儲在事件管理表存儲器54中的事件管理表的示例。在該事件管理表的示例中,注冊有事件、項(xiàng)目名以及項(xiàng)目值。順便指出,即使在同一事件中,也存在指定多組項(xiàng)目名和項(xiàng)目值的情況。在這種情況下,針對同一事件注冊多行數(shù)據(jù)。在上述特定條件的情況下,在事件管理表中注冊有如圖13所示的數(shù)據(jù)。
然后,事件判斷處理器53判斷是否已處理了所有事件(步驟S15),當(dāng)存在任何未處理事件時(shí),處理返回到步驟S11。另一方面,當(dāng)已處理完所有事件時(shí),處理返回到初始處理。
回到對圖11的說明,接下來執(zhí)行搜索處理(步驟S5)。將通過使用圖14到23對該搜索處理進(jìn)行說明。
首先,搜索預(yù)處理器55從存儲在事件管理表存儲器54中的事件管理表中識別出在各事件中使用的項(xiàng)目名,針對每個(gè)所識別的項(xiàng)目名從快速結(jié)構(gòu)數(shù)據(jù)存儲器56中獲得所有項(xiàng)目值,并針對每個(gè)所識別的項(xiàng)目名構(gòu)造事件歷史條件表(圖14步驟S21)。具體來說,圖15示出了該事件歷史條件表的示例。根據(jù)上述條件,項(xiàng)目名是“產(chǎn)品名稱”。因此,獲得了圖2所示的值表9007。圖15所示的事件歷史條件表包括在該值表9007中包括的多個(gè)項(xiàng)目值的多個(gè)行,還包括表示狀態(tài)轉(zhuǎn)變的狀態(tài)列S1到S8,以及事件標(biāo)記列(FLG)。順便指出,事件歷史條件表還具有能夠?qū)⒋鎯υ谑录芾肀碇械氖录c狀態(tài)相關(guān)聯(lián)的結(jié)構(gòu)。
接下來,搜索預(yù)處理器55對事件管理表存儲器54和搜索指令數(shù)據(jù)存儲器52中的事件管理表進(jìn)行查詢,以將一個(gè)事件與一個(gè)狀態(tài)相關(guān)聯(lián),并將相對應(yīng)的項(xiàng)目值的標(biāo)記設(shè)置為“ON”,以針對各項(xiàng)目值生成事件標(biāo)記(步驟S23)。
將與該處理有關(guān)的搜索指令中的事件次序條件存儲在搜索指令數(shù)據(jù)存儲器52中。根據(jù)該次序條件,將事件與狀態(tài)相關(guān)聯(lián)。根據(jù)上述條件,由于按事件1(E1)、事件2(E2)以及事件3(E3)的次序?qū)@些事件進(jìn)行搜索,因此將事件1與狀態(tài)S1相關(guān)聯(lián)、將事件2與狀態(tài)S2相關(guān)聯(lián)并將事件3與狀態(tài)S3相關(guān)聯(lián)。然后,將它們存儲在事件歷史條件表中。當(dāng)通過該步驟執(zhí)行了處理時(shí),事件歷史條件表變成如圖16所示的狀態(tài)。順便指出,由于此時(shí)狀態(tài)S4到S8未與任何事件相關(guān)聯(lián),因此在圖16中這些部分是陰影的,并將“0”設(shè)置成這些狀態(tài)的標(biāo)記。
此外,對于每個(gè)狀態(tài),將“ON”設(shè)置成相對應(yīng)的項(xiàng)目值的標(biāo)記。根據(jù)上述條件,由于在事件1(E1)中指定了“DVD播放器”、“HDD記錄器”或“TV”,因此將“DVD播放器”、“HDD記錄器”以及“TV”識別為相對應(yīng)的項(xiàng)目值。此外,在與事件1相對應(yīng)的狀態(tài)S1的列中并且在“DVD播放器”、“HDD記錄器”以及“TV”的相應(yīng)行中設(shè)置“1”,并在相同的列并且其他行中設(shè)置“0”。
順便指出,存在在搜索條件中指定的項(xiàng)目值與實(shí)際注冊在數(shù)據(jù)庫中的項(xiàng)目值不完全相同的情況。在本實(shí)施例中,不針對每個(gè)記錄判斷這些項(xiàng)目值是否相同。因?yàn)樵谠撾A段判斷注冊在值表9007中的項(xiàng)目值是否與在搜索條件中指定的項(xiàng)目值相同,因此簡化了后續(xù)處理。
類似地,由于在事件2(E2)中指定了“軟件”,因此將“DVD軟件”識別為相對應(yīng)的項(xiàng)目值。由此,在不存在完全一致性的情況下,與針對每個(gè)記錄執(zhí)行比較的常規(guī)技術(shù)相比,本實(shí)施例中的后續(xù)處理變得高效。然后,在與事件2相對應(yīng)的狀態(tài)列S2的并且在行“DVD軟件”中設(shè)置“1”,在其他行中設(shè)置“0”。
由于在事件3(E3)中指定了“DVD-R”或“CD-RW”,因此只將“DVD-R”識別為相對應(yīng)的項(xiàng)目值。由此,在指定了包括完全不同的項(xiàng)目值的搜索條件的情況下,容易理解,針對每個(gè)記錄進(jìn)行比較是非常低效的。然后,在與事件3相對應(yīng)的狀態(tài)列S3中并且在行“DVD-R”中設(shè)置“1”。
然后,將根據(jù)狀態(tài)S1到S8設(shè)置的標(biāo)記的位當(dāng)作二進(jìn)制位串。順便指出,事件的次序越靠前,設(shè)置越低的位“1”,而事件的次序越靠后,設(shè)置越高的位“1”。由此,根據(jù)事件的次序,設(shè)置了事件標(biāo)記。在指定了同一次序的情況下,即使找到了不同的項(xiàng)目值,也設(shè)置相同的事件標(biāo)記。圖16表示在事件標(biāo)記列(FLG)中被轉(zhuǎn)換成十進(jìn)制值的值。然而,使用了二進(jìn)制值。
由于在該階段完成了事件歷史條件表,因此將該事件歷史條件表的數(shù)據(jù)存儲在事件歷史條件表存儲器57中。順便指出,盡管稍后要進(jìn)行描述,但是需要代表值表9007的表。因此,生成了如圖18所示的表501,并將它存儲在事件歷史條件表存儲器57中。
然后,搜索預(yù)處理器55對快速結(jié)構(gòu)數(shù)據(jù)存儲器56進(jìn)行查詢,根據(jù)存儲在搜索指令數(shù)據(jù)存儲器52中的組項(xiàng)目和排序項(xiàng)目對快速結(jié)構(gòu)中的搜索目標(biāo)數(shù)據(jù)進(jìn)行排序,并將排序結(jié)果存儲在排序結(jié)果存儲器58中(步驟S25)。該處理本身與常規(guī)技術(shù)相同。存儲在排序結(jié)果存儲器58中的數(shù)據(jù)是如圖4所示的數(shù)據(jù)。
此外,搜索預(yù)處理器55根據(jù)搜索指令將狀態(tài)轉(zhuǎn)變條件設(shè)置在狀態(tài)轉(zhuǎn)變管理器591中(步驟S27)。盡管以下對詳情進(jìn)行了說明,但是可以對狀態(tài)轉(zhuǎn)變條件進(jìn)行各種設(shè)置。例如,對于上述具體示例,存在應(yīng)當(dāng)根據(jù)搜索者的意圖來設(shè)置狀態(tài)轉(zhuǎn)變條件的情況,如對在事件1之后發(fā)生事件1的情況的處理,對在事件1之后發(fā)生除事件1到3以外的任何事件然后發(fā)生事件2等等的情況的處理,。這里,當(dāng)在搜索指令中存在對在事件1之后發(fā)生除事件1到3以外的任何事件然后發(fā)生事件2等的情況的處理的指令時(shí),將狀態(tài)轉(zhuǎn)變的這些條件設(shè)置在狀態(tài)轉(zhuǎn)變管理器591中。存在由于使用缺省設(shè)置而跳過步驟S27的情況。順便指出,由于根據(jù)事件數(shù)量確定了狀態(tài)數(shù)量,因此總是執(zhí)行對狀態(tài)數(shù)量的設(shè)置。經(jīng)由終端A,處理進(jìn)行到圖20所示的處理。
以下通過使用圖19對由狀態(tài)轉(zhuǎn)變管理器591管理的狀態(tài)和狀態(tài)轉(zhuǎn)變進(jìn)行說明。所需狀態(tài)是狀態(tài)S1到S3以及初始狀態(tài)S0。順便指出,將狀態(tài)S3識別為最終狀態(tài)。當(dāng)事件數(shù)量增加時(shí),狀態(tài)數(shù)量也增加,而當(dāng)事件數(shù)量減少時(shí),狀態(tài)數(shù)量也減少。此外,狀態(tài)轉(zhuǎn)變包括從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變A(當(dāng)滿足事件1的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S1到狀態(tài)S2的狀態(tài)轉(zhuǎn)變B(當(dāng)滿足事件2的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S2到狀態(tài)S3的狀態(tài)轉(zhuǎn)變D(當(dāng)滿足事件3的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S3到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變F(當(dāng)確認(rèn)當(dāng)前狀態(tài)達(dá)到了作為最終狀態(tài)的狀態(tài)S3時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從初始狀態(tài)S0到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變G(當(dāng)在初始狀態(tài)S0中不滿足事件1的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S1到狀態(tài)S1的狀態(tài)轉(zhuǎn)變C(當(dāng)在狀態(tài)S1中再次滿足事件1的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S2到狀態(tài)S2的狀態(tài)轉(zhuǎn)變E(當(dāng)在狀態(tài)S2中再次滿足事件2的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、從狀態(tài)S1到狀態(tài)S0的狀態(tài)轉(zhuǎn)變H(當(dāng)在狀態(tài)S1中不滿足事件1或2的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)、以及從狀態(tài)S2到狀態(tài)S0的狀態(tài)轉(zhuǎn)變I(當(dāng)在狀態(tài)S2中不滿足事件2或3的搜索條件時(shí)會發(fā)生該狀態(tài)轉(zhuǎn)變)。由此,包括如下的狀態(tài)轉(zhuǎn)變從初始狀態(tài)經(jīng)由中間狀態(tài)到最終狀態(tài)的狀態(tài)轉(zhuǎn)變、當(dāng)發(fā)生了從除最終狀態(tài)以外的某個(gè)狀態(tài)到該狀態(tài)的狀態(tài)轉(zhuǎn)變時(shí)發(fā)生的自身轉(zhuǎn)變、當(dāng)確認(rèn)當(dāng)前狀態(tài)達(dá)到了最終狀態(tài)時(shí)從最終狀態(tài)到初始狀態(tài)的狀態(tài)轉(zhuǎn)變、以及當(dāng)沒有發(fā)生到下一狀態(tài)的狀態(tài)轉(zhuǎn)變和自身轉(zhuǎn)變中的任何狀態(tài)轉(zhuǎn)變時(shí)發(fā)生的到初始狀態(tài)的狀態(tài)轉(zhuǎn)變。
順便指出,通過根據(jù)搜索指令來設(shè)置自身轉(zhuǎn)變和到初始狀態(tài)的狀態(tài)轉(zhuǎn)變的條件,可以執(zhí)行靈活的提取。例如,可以執(zhí)行如下設(shè)置只要不滿足進(jìn)行到后續(xù)狀態(tài)的轉(zhuǎn)變的條件,就執(zhí)行自身轉(zhuǎn)變。例如,當(dāng)按“HDD記錄器”、“DVD播放器”以及“DVD-R”的次序購買它們時(shí),滿足了上述條件。然而,當(dāng)按“HDD記錄器”、“電冰箱”、“DVD軟件”以及“DVD-R”的次序購買它們時(shí),不滿足上述條件。然而,如果在不轉(zhuǎn)變到初始狀態(tài)的情況下發(fā)生了自身轉(zhuǎn)變時(shí),即使檢測到記錄“電冰箱”,即使在后一購買歷史的情況下也判定滿足上述條件。即,通過廣泛地了解購買歷史,變得可以提取近似地執(zhí)行了目標(biāo)購買歷史的客戶。
接著,搜索處理器59從存儲在排序結(jié)果存儲器58的記錄(圖4)中識別出未處理記錄(圖20步驟S29)。然后,搜索處理器59識別所識別出的未處理記錄的組項(xiàng)目的項(xiàng)目值(步驟S31)。通過使用所識別出的未處理記錄的記錄號(SETID),從客戶ID的POS數(shù)組9002(其被存儲在快速結(jié)構(gòu)數(shù)據(jù)存儲器56中)中讀出位于相對應(yīng)的位置處的項(xiàng)目值編號,并基于該項(xiàng)目值編號從值表9003中獲取項(xiàng)目值。
然后,搜索處理器59判斷在步驟S31處識別出的未處理記錄的組項(xiàng)目的項(xiàng)目值是否發(fā)生了變化(步驟S33)。通過保持先前處理的記錄的組項(xiàng)目的項(xiàng)目值,來判斷它是否發(fā)生了變化。這是因?yàn)閼?yīng)當(dāng)針對其組項(xiàng)目具有同一項(xiàng)目值的那些記錄來判斷是否滿足搜索條件。順便指出,當(dāng)不存在先前處理的記錄時(shí),判定發(fā)生了變化。
當(dāng)判定發(fā)生了變化時(shí),搜索處理器59使得狀態(tài)轉(zhuǎn)變管理器591執(zhí)行到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變(步驟S35)。在步驟S35之后或者當(dāng)判定組項(xiàng)目的項(xiàng)目值未發(fā)生變化時(shí),搜索處理器59識別所識別出的未處理記錄的事件標(biāo)記(步驟S37)。下面通過使用圖21對該處理進(jìn)行說明。
首先,當(dāng)從存儲在排序結(jié)果存儲器58中的SET數(shù)組9011中識別出未處理記錄時(shí),識別所識別出的未處理記錄的記錄號。然后,在產(chǎn)品名稱的POS數(shù)組9006(其被存儲在快速結(jié)構(gòu)數(shù)據(jù)存儲器56中)中識別出位于該記錄號處的項(xiàng)目值編號,并識別出事件標(biāo)記表501中的位于該項(xiàng)目值編號的位置處的事件標(biāo)記,而不是從先前的值表9007中識別出項(xiàng)目值。當(dāng)SETID是“1”時(shí),在POS數(shù)組9006中識別出該項(xiàng)目值編號是“5”。然而,并不從值表9007中識別出“TV”,而是從事件標(biāo)記表501中識別出事件標(biāo)記“1”(二進(jìn)制值“00000001”)。
回到對圖20的說明,狀態(tài)轉(zhuǎn)變管理器591根據(jù)所識別出的事件標(biāo)記執(zhí)行狀態(tài)轉(zhuǎn)變(步驟S41)。順便指出,保持有與該狀態(tài)轉(zhuǎn)變有關(guān)的記錄的記錄號(SETID)??梢詫⒋3值挠涗浱栂拗茷榕c在從初始狀態(tài)到最終狀態(tài)的直接路徑上的狀態(tài)轉(zhuǎn)變有關(guān)的記錄的記錄號。在圖19的示例中,這些記錄的記錄號發(fā)生了狀態(tài)轉(zhuǎn)變A、B以及D。由此,存在判斷是否發(fā)生了特定狀態(tài)轉(zhuǎn)變的情況。
發(fā)生了什么狀態(tài)轉(zhuǎn)變?nèi)Q于當(dāng)前狀態(tài)是什么和識別出了什么事件標(biāo)記。在如圖19所示的狀態(tài)和轉(zhuǎn)變的情況下,當(dāng)在初始狀態(tài)中識別出了其最低有效位(第8位)是“1”的事件標(biāo)記(二進(jìn)制位串)時(shí),發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變A。當(dāng)在狀態(tài)S1中識別出了其第7位是“1”的事件標(biāo)記時(shí),發(fā)生了從狀態(tài)S1到狀態(tài)S2的狀態(tài)轉(zhuǎn)變B。當(dāng)在狀態(tài)S2中識別出了其第6位是“1”的事件標(biāo)記時(shí),發(fā)生了從狀態(tài)S2到狀態(tài)S3的狀態(tài)轉(zhuǎn)變D。當(dāng)識別出了其最低有效位是“1”的事件標(biāo)記時(shí),發(fā)生了狀態(tài)轉(zhuǎn)變C(它是在狀態(tài)S1中的自身轉(zhuǎn)變)。當(dāng)識別出了其第7位是“1”的事件標(biāo)記時(shí),發(fā)生了狀態(tài)轉(zhuǎn)變E(它是在狀態(tài)S2中的自身轉(zhuǎn)變)。在下述處理中對從狀態(tài)S3到狀態(tài)S0的狀態(tài)轉(zhuǎn)變F進(jìn)行管理,并且當(dāng)識別出除上述事件標(biāo)記以外的任何事件標(biāo)記時(shí)發(fā)生了狀態(tài)轉(zhuǎn)變G、H以及I。順便指出,如上所述,可以根據(jù)另一定義來發(fā)生自身轉(zhuǎn)變。
由此,通過檢查當(dāng)前狀態(tài)和事件標(biāo)記的預(yù)定位,可以判斷是否發(fā)生了狀態(tài)轉(zhuǎn)變。
回到對圖20的說明,狀態(tài)轉(zhuǎn)變管理器591判斷當(dāng)前狀態(tài)是否達(dá)到了最終狀態(tài)(步驟S43)。在圖19的示例中,判斷當(dāng)前狀態(tài)是否達(dá)到了最終狀態(tài)S3。當(dāng)判定當(dāng)前狀態(tài)尚未達(dá)到最終狀態(tài)時(shí),處理進(jìn)行到步驟S49。另一方面,當(dāng)判定當(dāng)前狀態(tài)達(dá)到了最終狀態(tài)時(shí),狀態(tài)轉(zhuǎn)變管理器591將與此時(shí)的狀態(tài)轉(zhuǎn)變相對應(yīng)的記錄號注冊在搜索結(jié)果存儲器60中的已提取事件表中(步驟S45)。例如,該已提取事件表如圖22所示。即,在該表中注冊提取編號(No.)、進(jìn)行了到狀態(tài)S1的狀態(tài)轉(zhuǎn)變的記錄號(SETID)、進(jìn)行了到狀態(tài)S2的狀態(tài)轉(zhuǎn)變的記錄號以及進(jìn)行了到狀態(tài)S3的狀態(tài)轉(zhuǎn)變的記錄號。然后,狀態(tài)轉(zhuǎn)變管理器執(zhí)行到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變(步驟S47)。
在步驟S47之后,或者當(dāng)判定當(dāng)前狀態(tài)尚未達(dá)到最終狀態(tài)時(shí),狀態(tài)轉(zhuǎn)變管理器591判斷是否已處理了搜索目標(biāo)記錄中的最后一條記錄(步驟S49)。當(dāng)存在未處理記錄時(shí),處理回到步驟S29。另一方面,當(dāng)已處理了最后一條記錄時(shí),處理回到初始處理。
圖23總結(jié)了在獲得了如圖4所示的排序結(jié)果的情況下步驟S29到S49的處理進(jìn)展。由于第1條記錄的事件標(biāo)記是“1”,即,最低有效位(第8位)是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第2條記錄的事件標(biāo)記是“1”,即,最低有效位是“1”,因此發(fā)生了到狀態(tài)S1的自身轉(zhuǎn)變。由于第3條記錄的事件標(biāo)記是“2”,即,第7位是“1”,因此發(fā)生了到狀態(tài)S2的狀態(tài)轉(zhuǎn)變。由于第四條記錄的事件標(biāo)記是“4”,即,第6位是“1”,因此發(fā)生了到狀態(tài)S3的狀態(tài)轉(zhuǎn)變。即,由于當(dāng)前狀態(tài)達(dá)到了最終狀態(tài),因此輸出圖4中的SET數(shù)組9011中的第1條、第3條以及第4條記錄的記錄號。順便指出,由于第2條記錄進(jìn)行了自身轉(zhuǎn)變,因此可以輸出第2條、第3條以及第4條記錄的記錄號。然后,當(dāng)前狀態(tài)轉(zhuǎn)變到初始狀態(tài)S0。
順便指出,當(dāng)處理第5條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第5條記錄的事件標(biāo)記是“0”,因此發(fā)生了到初始狀態(tài)S0的自身轉(zhuǎn)變。由于第6條記錄的事件標(biāo)記是“0”,因此發(fā)生了到初始狀態(tài)S0的自身轉(zhuǎn)變。由于第7條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第8條記錄的事件標(biāo)記是“0”,因此發(fā)生了到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變。
順便指出,當(dāng)處理第9條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第9條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第10條記錄的事件標(biāo)記是“1”,因此發(fā)生了到狀態(tài)S1的自身轉(zhuǎn)變。由于第11條記錄的事件標(biāo)記是“4”,因此發(fā)生了從狀態(tài)S1到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變。
順便指出,當(dāng)處理第12條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第12條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第13條記錄的事件標(biāo)記是“2”,因此發(fā)生了從狀態(tài)S1到狀態(tài)S2的狀態(tài)轉(zhuǎn)變。由于第14條記錄的事件標(biāo)記是“4”,因此發(fā)生了從狀態(tài)S2到狀態(tài)S3的狀態(tài)轉(zhuǎn)變。即,由于當(dāng)前狀態(tài)達(dá)到了最終狀態(tài),因此輸出第12條、第13條以及第14條記錄的記錄號。然后,當(dāng)前狀態(tài)轉(zhuǎn)變到初始狀態(tài)S0。
順便指出,當(dāng)處理第15條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第15條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第16條記錄的事件標(biāo)記是“0”,因此發(fā)生了到初始狀態(tài)S0的狀態(tài)轉(zhuǎn)變。
順便指出,當(dāng)處理第17條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第17條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。由于第18條記錄的事件標(biāo)記是“2”,因此發(fā)生了從狀態(tài)S1到狀態(tài)S2的狀態(tài)轉(zhuǎn)變。
順便指出,當(dāng)處理第19條記錄時(shí),由于作為組項(xiàng)目的客戶ID變化了,因此將當(dāng)前狀態(tài)強(qiáng)制轉(zhuǎn)變到初始狀態(tài)S0。此外,由于第19條記錄的事件標(biāo)記是“1”,因此發(fā)生了從初始狀態(tài)S0到狀態(tài)S1的狀態(tài)轉(zhuǎn)變。然而,由于該記錄是最后一條記錄,因此處理返回到初始處理。
由此,只在設(shè)置事件標(biāo)記時(shí)執(zhí)行在項(xiàng)目值之間的比較,并且在針對各記錄進(jìn)行處理的過程中,識別出事件標(biāo)記,以判斷根據(jù)事件標(biāo)記而發(fā)生的狀態(tài)轉(zhuǎn)變是否是按照定義而發(fā)生的。至于對事件標(biāo)記的檢查,當(dāng)使用上述標(biāo)記時(shí),由于只確認(rèn)是否在預(yù)定位置處設(shè)置有“1”,因此使處理高度簡化了。而且,將對記錄的處理限制為每一個(gè)記錄一次。因此,當(dāng)應(yīng)當(dāng)處理巨大量的記錄時(shí),減少了處理負(fù)荷。
回到對圖11的說明,搜索處理器59基于在搜索結(jié)果存儲器60中提取的事件表,提取存儲在搜索指令數(shù)據(jù)存儲器52中的提取項(xiàng)目的項(xiàng)目值,并將它們存儲在搜索結(jié)果存儲器60中(步驟S7)。該處理是如下處理,其中,如圖2所示,在待提取項(xiàng)目的POS數(shù)組中的相對應(yīng)的位置處獲得項(xiàng)目值編號,并從值表中讀出與該項(xiàng)目值編號相對應(yīng)的項(xiàng)目值。當(dāng)應(yīng)當(dāng)提取客戶ID、日期和事件、產(chǎn)品名稱、價(jià)格以及商店代號時(shí),將如圖24所示的數(shù)據(jù)存儲在搜索結(jié)果存儲器60中。由于在圖23的示例中執(zhí)行了兩次注冊,因此提取并存儲兩個(gè)組,每個(gè)組包括3個(gè)記錄。
然后,搜索結(jié)果輸出單元61讀出存儲在搜索結(jié)果存儲器60中的搜索結(jié)果,并將所讀出的搜索結(jié)果輸出給請求源的用戶終端3(步驟S9)。用戶終端3從DB服務(wù)器5接收該搜索結(jié)果的數(shù)據(jù),并將該數(shù)據(jù)顯示在顯示裝置上。例如,當(dāng)在顯示裝置上顯示了如圖24所示的數(shù)據(jù)時(shí),用戶可以掌握滿足搜索指令的數(shù)據(jù)。
通過執(zhí)行上述處理,提高了整個(gè)搜索處理的速度,并且可以處理各種搜索指令。
盡管對本發(fā)明的一個(gè)實(shí)施例進(jìn)行了描述,但是本發(fā)明并不限于該實(shí)施例。例如,圖9所示的DB服務(wù)器5的功能框圖僅僅是個(gè)示例,并不總是對應(yīng)于實(shí)際程序模塊結(jié)構(gòu)。
此外,對于處理流程,只要處理結(jié)果相同,就可以并行地執(zhí)行多個(gè)步驟或者改變多個(gè)步驟的次序。例如,可以在搜索處理的較早階段中執(zhí)行排序處理,并且由于排序處理需要很多時(shí)間,因此可以由其他處理器并行地執(zhí)行排序處理。
此外,對事件標(biāo)記的設(shè)置方法并不限于上述方法,可以按其他模式來設(shè)置事件標(biāo)記。例如,當(dāng)僅可以適當(dāng)?shù)卣莆諣顟B(tài)轉(zhuǎn)變的發(fā)生時(shí),不必移動二進(jìn)制位串中的位位置,可以僅采用不同的值。此外,當(dāng)狀態(tài)轉(zhuǎn)變的數(shù)量很大時(shí),可以使用超過8位的事件標(biāo)記。
此外,在上述具體示例中,指定了組項(xiàng)目。然而,并不總是指定組項(xiàng)目。此外,盡管在上述示例中按時(shí)間順序執(zhí)行排序,但是排序項(xiàng)目不僅是日期和事件,也可以指定其他項(xiàng)目。此外,在上述具體示例中搜索項(xiàng)目僅僅是產(chǎn)品名稱。可以指定多個(gè)搜索項(xiàng)目。此外,可以針對同一事件的同一搜索項(xiàng)目僅指定“或”條件,但是可以針對不同搜索項(xiàng)目之間的關(guān)系指定“與”條件。當(dāng)使用“與”條件時(shí),針對各搜索項(xiàng)目單獨(dú)地指定事件標(biāo)記,并基于多個(gè)事件標(biāo)記的組合來判斷狀態(tài)轉(zhuǎn)變。例如,在定義了產(chǎn)品名稱是“TV”并且其價(jià)格是“超過50000日元”的事件的情況下,當(dāng)出現(xiàn)了產(chǎn)品名稱“TV”的標(biāo)記與價(jià)格“超過50000日元”的標(biāo)記的組合時(shí),在此情況下判定滿足與該事件有關(guān)的搜索條件。例如,即使識別了標(biāo)記A與標(biāo)記X的組合,但是在此情況下并未發(fā)生同一狀態(tài)轉(zhuǎn)變。即,通過適當(dāng)?shù)囟x狀態(tài)轉(zhuǎn)變可以靈活地處理搜索條件。
順便指出,用戶終端3和/或DB服務(wù)器5是如圖25所示的計(jì)算機(jī)設(shè)備。即,如圖25所示,通過總線2519連接有存儲器2501(存儲裝置)、CPU2503(處理器)、硬盤驅(qū)動器(HDD)2505、連接到顯示裝置2509的顯示控制器2507、用于可移動盤2511的驅(qū)動裝置2513、輸入裝置2515、以及用于與網(wǎng)絡(luò)相連接的通信控制器2517。在HDD2505中存儲有用于執(zhí)行本實(shí)施例中的上述處理的操作系統(tǒng)(OS)和應(yīng)用程序,當(dāng)由CPU2503來執(zhí)行該OS和應(yīng)用程序時(shí),將它們從HDD2505讀出到存儲器2501。當(dāng)產(chǎn)生了需求時(shí),CPU2503對顯示控制器2507、通信控制器2517以及驅(qū)動裝置2513進(jìn)行控制,并使得它們執(zhí)行所需操作。此外,將中間處理數(shù)據(jù)存儲在存儲器2501中,如果有必要,則將它存儲在HDD2505中。在本發(fā)明的本實(shí)施例中,將實(shí)現(xiàn)上述功能的應(yīng)用程序存儲在可移動盤2511中并進(jìn)行發(fā)布,然后將它從驅(qū)動裝置2513安裝到HDD2505中??梢酝ㄟ^諸如因特網(wǎng)的網(wǎng)絡(luò)和通信控制器2517將它安裝到HDD2505中。在如上所述的計(jì)算機(jī)中,諸如CPU2503和存儲器2501的硬件、OS以及必要的應(yīng)用程序系統(tǒng)地相互協(xié)作,從而實(shí)現(xiàn)如上所詳細(xì)描述的各種功能。
盡管針對本發(fā)明的特定優(yōu)選實(shí)施例對本發(fā)明進(jìn)行了描述,但是本領(lǐng)域的技術(shù)人員可以提出各種變型和修改,本發(fā)明旨在涵蓋落在所附權(quán)利要求的范圍內(nèi)的這種變型和修改。
權(quán)利要求
1.一種搜索處理方法,該搜索處理方法包括以下步驟分配步驟,基于包括多個(gè)有序搜索條件的搜索指令,針對特定項(xiàng)目的每個(gè)項(xiàng)目值分配標(biāo)記,并將所述標(biāo)記作為標(biāo)記定義數(shù)據(jù)存儲在存儲裝置中,每個(gè)所述搜索條件都指定了所述特定項(xiàng)目的特定值;排序步驟,根據(jù)預(yù)定規(guī)則對存儲在數(shù)據(jù)庫中的待搜索的多個(gè)記錄進(jìn)行排序;識別步驟,通過使用存儲在所述存儲裝置中的所述標(biāo)記定義數(shù)據(jù),按排序后的所述多個(gè)記錄的次序識別出與待處理的每個(gè)所述記錄中的所述特定項(xiàng)目的項(xiàng)目值相對應(yīng)的標(biāo)記;判斷步驟,在按排序后的所述多個(gè)記錄的所述次序識別所述標(biāo)記的所述識別步驟的處理中,判斷所述識別出的多個(gè)標(biāo)記的出現(xiàn)模式是否遵循所述搜索指令;以及輸出步驟,輸出與在被判定為遵循所述搜索指令的所述多個(gè)標(biāo)記的所述出現(xiàn)模式中包括的所述多個(gè)標(biāo)記有關(guān)的所述多個(gè)記錄的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,所述分配步驟包括以下步驟識別出與特定搜索條件中的所述特定項(xiàng)目的所述特定值相對應(yīng)并被包括在所述數(shù)據(jù)庫的所述記錄中的所述特定項(xiàng)目的項(xiàng)目值;和將根據(jù)所述特定搜索條件的所述次序的一標(biāo)記分配給所述識別出的項(xiàng)目值。
3.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,所述判斷步驟包括以下步驟根據(jù)所述識別出的多個(gè)標(biāo)記判斷是否發(fā)生了根據(jù)所述次序定義的多個(gè)狀態(tài)之間的轉(zhuǎn)變;和當(dāng)發(fā)生了所述多個(gè)狀態(tài)之間的所述轉(zhuǎn)變時(shí)判斷是否達(dá)到了最終狀態(tài)。
4.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,所述預(yù)定規(guī)則是包括如下步驟的條件針對由所述搜索指令指定的每個(gè)組項(xiàng)目進(jìn)行排序,并按時(shí)間順序進(jìn)行排序,并且,按照所述組項(xiàng)目的同一項(xiàng)目值的每個(gè)范圍來執(zhí)行所述判斷步驟。
5.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,所述數(shù)據(jù)庫具有保持有在唯一地標(biāo)識了項(xiàng)目值的項(xiàng)目值編號與所述項(xiàng)目值之間的關(guān)系的表,和存儲有按所述多個(gè)記錄的次序指定了所述項(xiàng)目值編號的信息的項(xiàng)目值編號指定信息數(shù)組。
6.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,所述標(biāo)記是如下位串,在該位串中在相對應(yīng)的搜索條件的所述次序的位位置處設(shè)置有“1”。
7.根據(jù)權(quán)利要求1所述的搜索處理方法,其中,針對被存儲在所述數(shù)據(jù)庫中的待搜索的所述多個(gè)記錄只執(zhí)行一次識別所述標(biāo)記的所述識別步驟。
8.一種搜索處理設(shè)備,該搜索處理設(shè)備包括標(biāo)記分配單元,其基于包括多個(gè)有序搜索條件的搜索指令,針對特定項(xiàng)目的每個(gè)項(xiàng)目值分配標(biāo)記,并將所述標(biāo)記作為標(biāo)記定義數(shù)據(jù)存儲在存儲裝置中,每個(gè)所述搜索條件都指定了所述特定項(xiàng)目的特定值;排序單元,根據(jù)預(yù)定規(guī)則對存儲在數(shù)據(jù)庫中的待搜索的多個(gè)記錄進(jìn)行排序;識別單元,通過使用存儲在所述存儲裝置中的所述標(biāo)記定義數(shù)據(jù),按排序后的所述多個(gè)記錄的次序識別出與待處理的每個(gè)所述記錄中的所述特定項(xiàng)目的項(xiàng)目值相對應(yīng)的標(biāo)記;判斷單元,在按排序后的所述多個(gè)記錄的所述次序識別所述標(biāo)記的處理中,判斷所述識別出的多個(gè)標(biāo)記的出現(xiàn)模式是否遵循所述搜索指令;以及輸出單元,輸出與在被判定為遵循所述搜索指令的所述多個(gè)標(biāo)記的所述出現(xiàn)模式中包括的所述多個(gè)標(biāo)記有關(guān)的所述多個(gè)記錄的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的搜索處理設(shè)備,其中,所述標(biāo)記分配單元包括識別單元,其識別出與特定搜索條件中的所述特定項(xiàng)目的所述特定值相對應(yīng)并被包括在所述數(shù)據(jù)庫的所述記錄中的所述特定項(xiàng)目的項(xiàng)目值;和分配單元,其將根據(jù)所述特定搜索條件的所述次序的一標(biāo)記分配給所述識別出的項(xiàng)目值。
10.根據(jù)權(quán)利要求8所述的搜索處理設(shè)備,其中,所述判斷單元包括根據(jù)所述識別出的多個(gè)標(biāo)記判斷是否發(fā)生了根據(jù)所述次序定義的多個(gè)狀態(tài)之間的轉(zhuǎn)變的單元;和當(dāng)發(fā)生了所述多個(gè)狀態(tài)之間的所述轉(zhuǎn)變時(shí)判斷是否達(dá)到了最終狀態(tài)的單元。
全文摘要
本發(fā)明提供一種搜索處理方法和設(shè)備。本發(fā)明的提出是為了在提取滿足有序多個(gè)搜索條件的多個(gè)記錄序列時(shí)減少處理量。本發(fā)明的搜索處理方法包括以下步驟分配步驟,基于包括多個(gè)有序搜索條件的搜索指令,針對特定項(xiàng)目的每個(gè)項(xiàng)目值分配標(biāo)記,并存儲所述標(biāo)記作為標(biāo)記定義數(shù)據(jù),其中每個(gè)搜索條件都指定了所述特定項(xiàng)目的特定值;排序步驟,對待搜索的多個(gè)記錄進(jìn)行排序;識別步驟,通過使用標(biāo)記定義數(shù)據(jù),按排序后的所述多個(gè)記錄的次序識別出與待處理的每個(gè)記錄中的特定項(xiàng)目的項(xiàng)目值相對應(yīng)的標(biāo)記;判斷步驟,在按排序后的所述多個(gè)記錄的所述次序識別出所述標(biāo)記的所述識別步驟的處理中,判斷所述識別出的多個(gè)標(biāo)記的出現(xiàn)模式是否遵循所述搜索指令;以及輸出步驟,輸出與在被判定為遵循所述搜索指令的所述多個(gè)標(biāo)記的所述出現(xiàn)模式中包括的所述多個(gè)標(biāo)記有關(guān)的所述多個(gè)記錄的數(shù)據(jù)。
文檔編號G06F17/30GK101086736SQ20061014279
公開日2007年12月12日 申請日期2006年10月31日 優(yōu)先權(quán)日2006年6月5日
發(fā)明者柱野正樹, 松本修 申請人:富士通株式會社