本發(fā)明屬于引擎搜索領(lǐng)域,尤其涉及一種使用開源項目的coreseek搜索分頁。
背景技術(shù):
目前,使用開源項目的coreseek,可以進(jìn)行海量查詢,可以得到秒級的響應(yīng)查詢。它具有以下特點(diǎn):1.高速索引:在現(xiàn)代CPU上可達(dá)10MB/秒(英文),在啟用了中文分詞后,建立索引的速度可達(dá)300K/s;2.高速搜索:在2-4GB的文本建立的索引上搜索,平均0.1秒內(nèi)獲得結(jié)果;3.可處理大數(shù)據(jù)量:在單一CPU上,實(shí)測最高可對100GB的文本建立索引,單一索引可包括100M文件因此,coreseek使得海量搜索有了很好的用戶體驗。Coreseek是將查詢結(jié)果加載到內(nèi)存里面的,因此配置文件設(shè)置了默認(rèn)的最大返回值X,因此每次查詢只返回X條查詢結(jié)果。那么分頁也就是在X條的基礎(chǔ)上進(jìn)行的。但實(shí)際情況,用戶想看X條外的,就只能是改變查詢條件,再次查詢,而且還不能過濾上次查詢的結(jié)果。當(dāng)然,也可以修改coreseek的配置文件,增大coreseek最大返回值,但是這樣做,又引發(fā)另外的問題,那就是消耗很大的內(nèi)存,這樣做得不償失。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于CORESEEK查詢分頁的方法,旨在解決不改變查詢條件無法查詢最大返回值以外查詢結(jié)果的問題。本發(fā)明是這樣實(shí)現(xiàn)的,一種基于CORESEEK查詢分頁的方法,所述方法包括以下步驟:A、設(shè)置coreseek配置文件的配置查詢返回結(jié)果的最大值和每頁顯示條數(shù);B、將查詢結(jié)果集進(jìn)行分頁顯示;C、利用軌跡算法過濾前次結(jié)果集獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟C中包括以下步驟:C1、利用軌跡算法記錄前一次結(jié)果集的查詢軌跡;C2、采用過濾的形式將前一次結(jié)果集顯示的結(jié)果去除;C3、獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。本發(fā)明的進(jìn)一步技術(shù)方案是:所述軌跡算法將查詢的結(jié)果設(shè)置查詢段,并且設(shè)置所述查詢段ID,所述查詢段每次最多返回最大值X,每頁顯示條數(shù)Y,其查詢段公式為:n=[(n-1)×X/Y+1,n×X/Y],n為自然數(shù)。本發(fā)明的進(jìn)一步技術(shù)方案是:所述軌跡算法需要軌跡連續(xù)。本發(fā)明的進(jìn)一步技術(shù)方案是:為保證軌跡連續(xù)性,要限制分頁跳轉(zhuǎn)不能超過三個查詢段,如超過三個查詢段,需要查詢多次,以獲取查詢軌跡。本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟A中所述最大值為一到一萬之間,所述每頁顯示數(shù)為任意自然數(shù)。本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟A中所述最大值為一千,所述每頁顯示數(shù)為伍拾。本發(fā)明的另一目的在于提供一種基于CORESEEK查詢分頁的裝置,所述裝置包括:數(shù)值設(shè)置模塊,用于設(shè)置coreseek配置文件的配置查詢返回結(jié)果的最大值和每頁顯示條數(shù);分頁顯示模塊,用于將查詢結(jié)果集進(jìn)行分頁顯示;軌跡查詢模塊,用于利用軌跡算法過濾前次結(jié)果集獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。本發(fā)明的進(jìn)一步技術(shù)方案是:所述軌跡查詢模塊包括:軌跡記錄單元,用于利用軌跡算法記錄前一次結(jié)果集的查詢軌跡;軌跡過濾單元,用于采用過濾的形式將前一次結(jié)果集顯示的結(jié)果;結(jié)果獲取單元,用于獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。本發(fā)明的有益效果是:通過軌跡算法,實(shí)現(xiàn)了在不更改查詢條件下,能夠查詢最大返回值以外的查詢結(jié)果,能夠查看到所有符合查詢提交條件的結(jié)果,Coreseek為了性能考慮,做了可以配置返回最大值的配置算法,不影響基礎(chǔ)性能的設(shè)置。附圖說明圖1是本發(fā)明實(shí)施例提供的基于CORESEEK查詢分頁的方法流程圖。具體實(shí)施方式如圖1所示,本發(fā)明提供的基于CORESEEK查詢分頁的方法流程圖,詳述如下:在步驟S1中,使用開源項目的coreseek,可以進(jìn)行海量查詢,可以得到秒級的響應(yīng)查詢,在查詢的過程中需要設(shè)置coreseek配置文件中查詢結(jié)果的最大值,并且根據(jù)最大值同時也要設(shè)置每頁顯示的條數(shù)。在設(shè)置查詢結(jié)果的最大值時,其最大值取值為任意的自然數(shù),并且每頁顯示的條數(shù)也是取值為任意自然數(shù),其中最大值大于每頁顯示條數(shù)。其最佳的設(shè)置查詢結(jié)果的最大值為一千,每頁顯示條數(shù)為伍拾。這樣的設(shè)置能夠使查詢的更快,更精準(zhǔn)。在步驟S2中,將步驟S1中查詢的結(jié)果集進(jìn)行分頁顯示,使得用戶在查詢時能夠方便的查看每一條的信息。在步驟S3中,利用軌跡算法記錄前一次結(jié)果集的查詢軌跡。所述軌跡算法將查詢的結(jié)果設(shè)置查詢段,并且設(shè)置所述查詢段ID,所述查詢段每次最多返回最大值X,每頁顯示條數(shù)Y,其查詢段公式為:n=[(n-1)×X/Y+1,n×X/Y],n為自然數(shù)。如,1至X/Y頁,稱為查詢段一,(X/Y+1)至{(X/Y+1)+[(X/Y+1)+(X/Y-1)]}頁,稱為查詢段二。所述軌跡算法需要軌跡連續(xù)。為保證軌跡連續(xù)性,要限制分頁跳轉(zhuǎn)不能超過三個查詢段,如超過三個查詢段,需要查詢多次,以獲取查詢軌跡。查詢段:每次最多返回1000,每頁顯示50,則,1-20頁,稱為查詢段1,21-40頁,稱為查詢段2…公式為:n=[(n-1)×X/Y+1,n×X/Y],n為自然數(shù)。查詢段1:[1,返回最大值/每頁顯示條數(shù)];(如:[1,1000/50],即[1,20])查詢段2:[上一查詢段最大值+1,2*返回最大值/每頁顯示條數(shù)](如:[20+1,2*1000/50],即[21,40])查詢段3:[上一查詢段最大值+1,3*返回最大值/每頁顯示條數(shù)]……在步驟S4中,采用過濾的方式將前一次結(jié)果集顯示的結(jié)果條數(shù)去除。獲取到查詢軌跡(如查詢軌跡是1_100000|2_8000|3_4500),獲取當(dāng)前要顯示的頁數(shù),判斷當(dāng)前頁數(shù)處在哪個查詢段(如查詢段4)。使用coreseek查詢,設(shè)置id過濾,setldRange(SID,0),SID表示上一段的查詢最大/最小id,0表示無限制大。那么上面提到的例子,查詢段4需要過濾的id為setldRange(4500,0)。在步驟S5中,獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。獲取到需要顯示的頁數(shù)N;判斷N所屬的查詢段(如26,表示處在查詢段2);獲取到查詢軌跡,使用coreseek查詢,設(shè)置id過濾,setldRange(上一查詢段SID,0),如查詢軌跡是1_8000|,則,SID為8000,0表示無限制大,設(shè)置返回條數(shù)(即每頁顯示的條數(shù)),例如,頁數(shù)為第26頁,每頁顯示50條,setLimits((26-20-1)*50,50)。假如,配置如下:coreseek配置了最大返回值為1000每頁顯示50條結(jié)果名稱解釋:SID每次查詢按照id排序,并記錄SID(如果是按照id倒序,則SID為每次查詢結(jié)果的最小id;如果是是升序,則SID是查詢結(jié)果的最大id)。查詢段每次最多返回1000,每頁顯示50,則,1-20頁,稱為查詢段1,21-40頁,稱為查詢段2…..查詢軌跡存儲:格式:查詢段1_SID|查詢段2_SID…..判斷當(dāng)前所處的查詢段,則利用coreseek提供的API(setldRange(minld,maxld),設(shè)置id范圍)。如,當(dāng)前頁數(shù)為26,則查詢段為2,查詢軌跡為1_5000000|,按照id倒序,則查詢處理如下:設(shè)置id范圍:setldRange(5000000,0),如果升序,則setldRange(0,5000000),0表示不作限制。設(shè)置結(jié)果偏移量:setLimits((26-20-1)*50,50),即搜索查詢段的第6頁。通過上面對id范圍的設(shè)置、結(jié)果偏移量的設(shè)置,即可查詢到相應(yīng)的結(jié)果,進(jìn)而實(shí)現(xiàn)了分頁的功能。本發(fā)明另一目的在于提供的基于CORESEEK查詢分頁的裝置,所述裝置包括:數(shù)值設(shè)置模塊,用于設(shè)置coreseek配置文件的配置查詢返回結(jié)果的最大值和每頁顯示條數(shù);分頁顯示模塊,用于將查詢結(jié)果集進(jìn)行分頁顯示;軌跡查詢模塊,用于利用軌跡算法過濾前次結(jié)果集獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。所述軌跡查詢模塊包括:軌跡記錄單元,用于利用軌跡算法記錄前一次結(jié)果集的查詢軌跡;軌跡過濾單元,用于采用過濾的形式將前一次結(jié)果集顯示的結(jié)果;結(jié)果獲取單元,用于獲取相對應(yīng)的順序結(jié)果集,從而獲取到第N頁的結(jié)果,其中N大于第一次查詢結(jié)果顯示頁數(shù)最大值。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。