專利名稱:一種搜索微博消息的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信網(wǎng)絡(luò)技術(shù),特別涉及一種搜索微博消息的方法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,通過(guò)點(diǎn)對(duì)點(diǎn)的技術(shù)來(lái)實(shí)現(xiàn)互聯(lián)網(wǎng)上的即時(shí)溝通的即時(shí)通訊(IM,Instant Messaging)工具應(yīng)用越來(lái)越普遍,IM已經(jīng)被大多數(shù)的用戶所接受并成為用戶日常生活必不可少的一部分。圖1為現(xiàn)有的微博客戶端軟件搜索微博消息的顯示界面示意圖。參見(jiàn)圖1,該顯示界面包括用戶顯示頁(yè)面和話題顯示頁(yè)面,用戶顯示頁(yè)面下包括多個(gè)關(guān)注的用戶,各關(guān)注用戶發(fā)表的微博消息存儲(chǔ)在各自的用戶消息頁(yè)面中,話題顯示頁(yè)面下包括多個(gè)話題,各個(gè)顯示頁(yè)面下展示的內(nèi)容按照接收的時(shí)間先后順序進(jìn)行呈現(xiàn),這樣,如果用戶收聽(tīng)了比較多的關(guān)注用戶,則在關(guān)注用戶的消息頁(yè)面上將呈現(xiàn)出很多的微博消息,但實(shí)際應(yīng)用中,用戶不需要對(duì)每條呈現(xiàn)的微博消息進(jìn)行瀏覽,只需要查找自己感興趣的微博消息,在搜索自己感興趣的微博消息時(shí),首先需要查詢感興趣的微博消息對(duì)應(yīng)的用戶,例如,用戶需要搜索微博相關(guān)的消息,則輸入搜索關(guān)鍵詞“微博”,并點(diǎn)擊顯示界面上的用戶顯示頁(yè)面控件觸發(fā)搜索請(qǐng)求至外部的服務(wù)器進(jìn)行搜索,以從服務(wù)器拉取與微博相關(guān)的用戶并展示在用戶顯示頁(yè)面下;然后,用戶再通過(guò)點(diǎn)擊用戶顯示頁(yè)面下各用戶消息頁(yè)面(用戶微博消息展示控件)獲取相關(guān)的微博消息并查看是否為自己感興趣的微博消息。由上述可見(jiàn),現(xiàn)有的搜索微博消息的方法,由于顯示界面設(shè)置的分類聚合策略較為單一,僅有用戶顯示頁(yè)面以及話題顯示頁(yè)面,在進(jìn)行微博消息搜索時(shí),需要對(duì)搜索得到的用戶顯示頁(yè)面下各用戶消息頁(yè)面包含的微博消息進(jìn)行瀏覽查看,以確認(rèn)是否為自己感興趣的微博消息。這樣,不利于用戶查找自己感興趣的微博消息,且會(huì)占用用戶較多的時(shí)間,降低了用戶的體驗(yàn)。同時(shí),內(nèi)存占用量作為衡量桌面應(yīng)用軟件性能的一個(gè)重要指標(biāo),特別是類似微博客戶端這種大批量微博消息應(yīng)用展示的軟件中,隨著用戶收到微博消息的增多,在顯示界面上需要展示的信息量也越來(lái)越大,導(dǎo)致程序的內(nèi)存占用也越來(lái)越大,將大大降低程序的運(yùn)行速度,使用戶體驗(yàn)進(jìn)一步降低。而且,用戶顯示頁(yè)面下的各個(gè)用戶消息頁(yè)面分別進(jìn)行微博消息的呈現(xiàn),復(fù)用性較低。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提出一種搜索微博消息的方法,用戶通過(guò)關(guān)鍵字可以直接搜索到相關(guān)的微博消息,降低用戶搜索所需微博消息的時(shí)間、提高用戶體驗(yàn)。本發(fā)明的另一目的在于提出一種搜索微博消息的裝置,用戶通過(guò)關(guān)鍵字可以直接搜索到相關(guān)的微博消息,降低用戶搜索所需微博消息的時(shí)間、提高用戶體驗(yàn)。為達(dá)到上述目的,本發(fā)明提供了一種搜索微博消息的方法,該方法包括預(yù)先設(shè)置分類的顯示頁(yè)面控件以及通用微博消息展示控件;接收來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息;
將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,并展示在所屬的顯示頁(yè)面。所述通用微博消息展示控件中設(shè)置有通用的展示格式、展示內(nèi)容以及展示位置信息,通過(guò)將信息填充至相應(yīng)用戶的微博消息展示控件中預(yù)先設(shè)置的相應(yīng)位置,形成該用戶的微博消息展示控件并依序進(jìn)行展示。根據(jù)預(yù)先設(shè)置的策略計(jì)算微博消息展示控件內(nèi)部各個(gè)區(qū)域的大小及相應(yīng)位置,在相應(yīng)的區(qū)域采用自繪的方式繪制控件效果。所述展示在所屬的顯示頁(yè)面具體包括預(yù)先設(shè)置每個(gè)顯示頁(yè)面控件下的微博消息展示控件數(shù)量,并根據(jù)微博消息展示控件數(shù)量確定順序排列的用戶微博消息展示控件在顯示頁(yè)面控件下的展示位置;確定形成的用戶微博消息展示控件在顯示頁(yè)面控件下的排列序號(hào),在該排列序號(hào)對(duì)應(yīng)的顯示頁(yè)面控件下的展示位置進(jìn)行展示。所述分類的顯示頁(yè)面控件包括用戶顯示頁(yè)面控件、話題顯示頁(yè)面控件以及廣播顯示頁(yè)面控件。所述廣播顯示頁(yè)面控件包括同城廣播頁(yè)面控件、熱門(mén)廣播頁(yè)面控件以及廣播分類頁(yè)面控件。所述獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息具體包括客戶端將搜索請(qǐng)求輸出至服務(wù)器,攜帶搜索關(guān)鍵詞以及分類頁(yè)面標(biāo)識(shí);服務(wù)器接收搜索請(qǐng)求,根據(jù)分類頁(yè)面標(biāo)識(shí)獲取需要搜索的分類頁(yè)面表項(xiàng),再?gòu)姆诸愴?yè)面表項(xiàng)中根據(jù)搜索關(guān)鍵詞獲取對(duì)應(yīng)的信息并下發(fā)至客戶端。所述下發(fā)至客戶端具體包括根據(jù)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包最大字節(jié)數(shù)以及信息的平均字節(jié)數(shù),設(shè)置下發(fā)信息的條數(shù),如果服務(wù)器搜索獲取的信息條數(shù)大于預(yù)先設(shè)置的下發(fā)信息的條數(shù),根據(jù)預(yù)先設(shè)置的下發(fā)信息的條數(shù)下發(fā)信息,攜帶未下發(fā)完畢標(biāo)識(shí),并存儲(chǔ)剩下的信息;接收下一頁(yè)信息拉取請(qǐng)求,從存儲(chǔ)的剩下的信息中,按照預(yù)先設(shè)置的下發(fā)信息的條數(shù)下發(fā)信息,直至存儲(chǔ)的剩下的信息下發(fā)完畢。所述將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置具體包括客戶端獲取服務(wù)器下發(fā)的包括用戶資料以及廣播消息的信息,按照接收的廣播消息條數(shù)復(fù)用通用微博消息展示控件,并按照廣播消息發(fā)布的時(shí)間順序,將對(duì)應(yīng)的用戶資料以及廣播消息填充至通用微博消息展示控件的相應(yīng)位置。進(jìn)一步包括存儲(chǔ)獲取的信息,判斷存儲(chǔ)的信息數(shù)量是否達(dá)到預(yù)先設(shè)置的閾值,如果是,按照預(yù)先設(shè)置的淘汰算法策略更新存儲(chǔ)的信息。進(jìn)一步包括存儲(chǔ)獲取的信息,根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新,根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息。所述根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新具體包括查詢?cè)摦?dāng)前存儲(chǔ)的信息是否設(shè)置有引用計(jì)數(shù)值,如果沒(méi)有,設(shè)置信息的初始引用計(jì)數(shù)值為1,如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;或者,確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1。所述根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息具體包括查詢存儲(chǔ)的信息的引用計(jì)數(shù)值,并將引用計(jì)數(shù)值為0的信息刪除。一種搜索微博消息的裝置,該裝置包括搜索結(jié)果頁(yè)控件展示模塊、搜索邏輯類管理模塊、全文搜索邏輯模塊以及消息拉取模塊,其中,搜索結(jié)果頁(yè)控件展示模塊,用于創(chuàng)建分類的顯示頁(yè)面控件以及通用微博消息展示控件,接收封裝的通用微博消息展示控件并展示在所屬的顯示頁(yè)面;搜索邏輯類管理模塊,用于監(jiān)測(cè)來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,將監(jiān)測(cè)到的搜索請(qǐng)求輸出至全文搜索邏輯模塊,接收全文搜索邏輯模塊輸出的封裝的通用微博消息展示控件,輸出至搜索結(jié)果頁(yè)控件展示模塊;全文搜索邏輯模塊,用于接收搜索請(qǐng)求,輸出至消息拉取模塊,接收消息拉取模塊輸出的信息,將信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,形成封裝的通用微博消息展示控件,輸出至搜索邏輯類管理模塊;消息拉取模塊,用于接收搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的頁(yè)面控件的信息,輸出至全文搜索邏輯模塊。進(jìn)一步包括引用計(jì)數(shù)值存儲(chǔ)模塊,用于存儲(chǔ)信息以及信息對(duì)應(yīng)的引用計(jì)數(shù)值;引用計(jì)數(shù)值處理模塊,用于接收消息拉取模塊輸出的信息,查詢引用計(jì)數(shù)值存儲(chǔ)模塊中是否有對(duì)應(yīng)信息的引用計(jì)數(shù)值,如果沒(méi)有,存儲(chǔ)信息并設(shè)置信息的初始引用計(jì)數(shù)值為1,如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1 ;引用計(jì)數(shù)值更新模塊,用于查詢引用計(jì)數(shù)值存儲(chǔ)模塊中引用計(jì)數(shù)值為0的信息, 并刪除。由上述的技術(shù)方案可見(jiàn),本發(fā)明提供的一種搜索微博消息的方法及裝置,預(yù)先設(shè)置分類的顯示頁(yè)面控件以及通用微博消息展示控件;接收來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求, 獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息;將獲取的信息依序(此順序?qū)嶋H是微博消息的發(fā)表時(shí)間順序,從新到舊)按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,并展示在所屬的顯示頁(yè)面。這樣,用戶通過(guò)消息關(guān)鍵字就可以查找到相關(guān)的微博消息,可以降低用戶搜索所需微博消息的時(shí)間、提高用戶體驗(yàn)。同時(shí),通過(guò)設(shè)置通用微博消息展示控件以進(jìn)行復(fù)用,可以有效減少存儲(chǔ)每個(gè)用戶微博消息展示控件所需的存儲(chǔ)空間,提高控件的復(fù)用效率。
圖1為現(xiàn)有的微博客戶端軟件搜索微博消息的顯示界面示意圖。圖2為本發(fā)明實(shí)施例搜索微博消息的方法流程示意圖。圖3為本發(fā)明實(shí)施例搜索微博消息的顯示界面示意圖。圖4為本發(fā)明實(shí)施例搜索微博消息的裝置結(jié)構(gòu)示意圖。圖5為消息Item控件邏輯管理結(jié)構(gòu)的系統(tǒng)架構(gòu)示意圖。
圖6為本發(fā)明實(shí)施例的消息頁(yè)控件構(gòu)架示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。現(xiàn)有技術(shù)中,由于顯示界面設(shè)置的分類聚合策略較為單一,僅有用戶顯示頁(yè)面以及話題顯示頁(yè)面,使得用戶搜索微博消息時(shí)需要進(jìn)行二次搜索,所需的時(shí)間較長(zhǎng),本發(fā)明實(shí)施例中,考慮對(duì)分類聚合策略進(jìn)行擴(kuò)展,提出包括同城廣播、熱門(mén)廣播、廣播分類等分類聚合策略,并采用消息控件的方式展示搜索得到的微博消息。即提供一種搜索微博消息的方法,采用全文搜索,用戶通過(guò)輸入消息關(guān)鍵字就可以查詢到相關(guān)的微博消息,為用戶提供更有價(jià)值、更靈活的信息,降低用戶搜索獲取所需微博消息的時(shí)間,有效減少了閱讀微博消息的條數(shù)和時(shí)間,從而提高了用戶體驗(yàn)。所應(yīng)說(shuō)明的是,本發(fā)明實(shí)施例的搜索微博消息的方法,可以基于現(xiàn)有Visual Studio 2005的活動(dòng)模板庫(kù)(ATL,Active Template Library)工程的開(kāi)發(fā)環(huán)境,在此不再贅述。圖2為本發(fā)明實(shí)施例搜索微博消息的方法流程示意圖。參見(jiàn)圖2,該流程包括步驟201,預(yù)先設(shè)置分類的顯示頁(yè)面控件以及通用微博消息展示控件;本步驟中,考慮對(duì)分類聚合策略進(jìn)行擴(kuò)展,在現(xiàn)有顯示界面設(shè)置有用戶顯示頁(yè)面控件以及話題顯示頁(yè)面控件的基礎(chǔ)上,根據(jù)用戶搜索的需求,進(jìn)一步設(shè)置廣播顯示頁(yè)面控件,即分類的顯示頁(yè)面控件包括用戶顯示頁(yè)面控件、話題顯示頁(yè)面控件以及廣播顯示頁(yè)面控件。當(dāng)然,實(shí)際應(yīng)用中,也可以對(duì)廣播顯示頁(yè)面控件進(jìn)行細(xì)分,包括同城廣播頁(yè)面控件、熱門(mén)廣播頁(yè)面控件、廣播分類頁(yè)面控件等?,F(xiàn)有技術(shù)中,在每個(gè)顯示頁(yè)面控件下包括的各個(gè)關(guān)注用戶,分別具有相互獨(dú)立的用戶微博消息展示控件,客戶端存儲(chǔ)每個(gè)用戶標(biāo)識(shí)對(duì)應(yīng)的用戶微博消息展示控件,在從服務(wù)器拉取到相應(yīng)信息時(shí),將攜帶信息的用戶微博消息展示控件展示在相應(yīng)顯示頁(yè)面控件下。本發(fā)明實(shí)施例中,考慮到顯示頁(yè)面控件下的用戶微博消息展示控件排版及尺寸都是類似的,因此,每個(gè)顯示頁(yè)面控件下的所有用戶微博消息展示控件采用通用微博消息展示控件,通用微博消息展示控件中設(shè)置通用的展示格式、展示內(nèi)容以及展示位置等信息,通過(guò)將相應(yīng)用戶的信息填充至用戶微博消息展示控件中預(yù)先設(shè)置的相應(yīng)位置,即可形成該用戶的用戶微博消息展示控件。這樣,可以有效減少存儲(chǔ)每個(gè)用戶微博消息展示控件所需的存儲(chǔ)空間,提高了控件的復(fù)用效率。其中,設(shè)置用戶頭像控件屬于現(xiàn)有技術(shù),具體可參見(jiàn)相關(guān)技術(shù)文獻(xiàn),在此不再贅述。實(shí)際應(yīng)用中,為了有效降低顯示界面刷新帶來(lái)的屏幕閃動(dòng)以及性能消耗,每個(gè)用戶微博消息展示控件都采用自繪的方式實(shí)現(xiàn),并預(yù)先設(shè)置每個(gè)顯示頁(yè)面控件下的用戶微博消息展示控件數(shù)量以及確定順序排列的用戶微博消息展示控件在顯示頁(yè)面控件下的展示位置,自繪的方式即客戶端根據(jù)預(yù)先設(shè)置的策略計(jì)算用戶微博消息展示控件內(nèi)部各個(gè)區(qū)域的大小及相應(yīng)位置,在相應(yīng)的區(qū)域繪制相應(yīng)的控件效果,這樣,可以通過(guò)觸發(fā)界面控件的重新排布來(lái)達(dá)到更為理想性能消耗。例如,在用戶拖動(dòng)客戶端顯示界面大小的時(shí)候,并不是在用戶拖動(dòng)鼠標(biāo)的每一時(shí)刻都觸發(fā)顯示界面的重新排布,而只是在用戶放下鼠標(biāo)的瞬間才觸發(fā)一次顯示界面重繪排布。在拉取到信息后,其中,信息包括用戶資料以及搜索的微博消息,按照微博消息發(fā)布的時(shí)間順序依序?qū)⒂脩糍Y料以及微博消息填充至用戶微博消息展示控件中預(yù)先設(shè)置的相應(yīng)位置,并按照該用戶微博消息展示控件在顯示頁(yè)面控件下順序排列的展示位置進(jìn)行展示。步驟202,接收來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息;本步驟中,用戶根據(jù)自身需要搜索的內(nèi)容,輸入搜索關(guān)鍵詞,然后確定需要搜索的分類顯示頁(yè)面,觸發(fā)輸出搜索請(qǐng)求,攜帶搜索關(guān)鍵詞以及分類頁(yè)面標(biāo)識(shí),分類頁(yè)面標(biāo)識(shí)用于表示是在服務(wù)器的用戶表項(xiàng)、話題表項(xiàng)或者廣播表項(xiàng)中進(jìn)行搜索,服務(wù)器接收到搜索請(qǐng)求, 根據(jù)分類頁(yè)面標(biāo)識(shí)獲取需要搜索的分類頁(yè)面表項(xiàng),再?gòu)闹懈鶕?jù)搜索關(guān)鍵詞獲取對(duì)應(yīng)的信肩、ο步驟203,將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,并展示在所屬的顯示頁(yè)面。本步驟中,顯示頁(yè)面對(duì)應(yīng)顯示頁(yè)面控件,客戶端獲取服務(wù)器下發(fā)的包括用戶資料以及廣播消息的信息,按照接收的廣播消息條數(shù)復(fù)用通用微博消息展示控件,并按照廣播消息發(fā)布的時(shí)間順序(從新到舊),將對(duì)應(yīng)的用戶資料以及廣播消息填充至通用微博消息展示控件的相應(yīng)位置,按照設(shè)置的順序排列的展示位置信息展示該復(fù)用的通用微博消息展示控件。例如,將與世博相關(guān)的微博消息展示在廣播顯示頁(yè)面下的用戶消息頁(yè)面中,用戶消息頁(yè)面可以包括主頁(yè)、客人頁(yè)、提及我的頁(yè)、同城廣播頁(yè)等。實(shí)際應(yīng)用中,由于熱門(mén)關(guān)鍵字/詞即用戶查詢的關(guān)鍵字/詞的相關(guān)消息數(shù)量巨大, 如果一次性的將所有搜索得到的信息由服務(wù)器下發(fā),則勢(shì)必將給服務(wù)器帶來(lái)相當(dāng)巨大的負(fù)載量。本發(fā)明實(shí)施例中,綜合考慮客戶端的應(yīng)用場(chǎng)景,采用批量多次的內(nèi)存使用策略,考慮到客戶端與服務(wù)器一次網(wǎng)絡(luò)交換的最大字節(jié)數(shù)長(zhǎng)度限制以及一條廣播消息(信息)的平均長(zhǎng)度,例如,在微博通信中,根據(jù)相關(guān)協(xié)議,網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包最大字節(jié)數(shù)約為800字節(jié),預(yù)先設(shè)置下發(fā)廣播消息的條數(shù),服務(wù)器根據(jù)預(yù)先設(shè)置的下發(fā)廣播消息的條數(shù),例如,15條,下發(fā)廣播消息及其對(duì)應(yīng)的用戶資料,并攜帶未下發(fā)完畢標(biāo)識(shí),并存儲(chǔ)剩下的信息。相應(yīng)地,客戶端在顯示頁(yè)面展示的最后一條廣播消息后,設(shè)置下一頁(yè)控件,當(dāng)用戶看完本頁(yè)面控件界面的廣播消息之后,可以進(jìn)行點(diǎn)擊下一頁(yè)控件觸發(fā)下一頁(yè)信息的拉取過(guò)程,直至存儲(chǔ)的剩下的信息下發(fā)完畢,并在最后一次下發(fā)時(shí),攜帶下發(fā)完畢標(biāo)識(shí)。圖3為本發(fā)明實(shí)施例搜索微博消息的顯示界面示意圖。參見(jiàn)圖3,該顯示界面包括用戶頁(yè)面、話題頁(yè)面以及廣播頁(yè)面,用戶通過(guò)輸入搜索關(guān)鍵詞“世博”,然后點(diǎn)擊廣播顯示頁(yè)面控件進(jìn)行搜索,就能夠展示出搜索得到的有關(guān)世博的廣播消息,不需要進(jìn)行二次瀏覽確認(rèn),這樣,用戶閱讀消息所需的時(shí)間短,從而提高了用戶體驗(yàn)。實(shí)際應(yīng)用中,如前所述,內(nèi)存的占用量是衡量桌面應(yīng)用程序性能的一個(gè)重要指標(biāo), 隨著各個(gè)顯示頁(yè)面用戶消息頁(yè)面的增多,內(nèi)存的增長(zhǎng)不可避免,需要制定一定的策略來(lái)盡可能的降低程序?qū)τ趦?nèi)存的消耗。本發(fā)明實(shí)施例中,采用消息池以及容器池兩個(gè)綜合應(yīng)用來(lái)降低內(nèi)存消耗。因而,進(jìn)一步包括步驟204,存儲(chǔ)獲取的信息,判斷存儲(chǔ)的信息數(shù)量是否達(dá)到預(yù)先設(shè)置的閾值,如果是,按照預(yù)先設(shè)置的淘汰算法策略更新存儲(chǔ)的信息。
本步驟中,在微博客戶端程序內(nèi)部存在一個(gè)消息池,負(fù)責(zé)存儲(chǔ)所有的信息,可以按照用戶顯示頁(yè)面控件、話題顯示頁(yè)面控件以及廣播顯示頁(yè)面控件對(duì)應(yīng)的用戶信息、話題信息以及廣播信息,分別存儲(chǔ)在用戶表項(xiàng)、話題表項(xiàng)以及廣播表項(xiàng)中,并在信息條數(shù)到達(dá)一定界限(預(yù)先設(shè)置的閾值)后采用預(yù)先設(shè)置的淘汰算法策略釋放不再需要的信息,其中,淘汰算法策略屬于現(xiàn)有技術(shù),具體可參見(jiàn)相關(guān)技術(shù)文獻(xiàn),在此不再贅述。這樣,可以有效避免內(nèi)存的占用量。本發(fā)明實(shí)施例中,也可以無(wú)需根據(jù)存儲(chǔ)的信息數(shù)量進(jìn)行判斷,直接根據(jù)信息自身的屬性進(jìn)行判斷,以確定是否釋放該信息。則在步驟203的基礎(chǔ)上,可以進(jìn)一步包括步驟205,存儲(chǔ)獲取的信息,根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新,根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息。本步驟中,根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新具體包括 查詢?cè)摦?dāng)前存儲(chǔ)的信息是否設(shè)置有引用計(jì)數(shù)值,如果沒(méi)有,設(shè)置信息的初始引用計(jì)數(shù)值為 1,如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;或者,確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1。根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息具體包括查詢存儲(chǔ)的信息的引用計(jì)數(shù)值,并將引用計(jì)數(shù)值為0的信息刪除。實(shí)際應(yīng)用中,如果信息在某一頁(yè)面控件界面上顯示,則將該信息的引用計(jì)數(shù)值加 1,反之,當(dāng)這個(gè)顯示頁(yè)面控件析構(gòu)時(shí),則將該信息的引用計(jì)數(shù)值減1,如果存儲(chǔ)的信息的引用計(jì)數(shù)值為0,說(shuō)明沒(méi)有顯示頁(yè)面控件顯示該信息,則可以釋放該信息的內(nèi)存數(shù)據(jù)。此外,也可以設(shè)置存儲(chǔ)分類的顯示頁(yè)面控件的容器池,當(dāng)創(chuàng)建某一頁(yè)廣播消息頁(yè)面控件時(shí),首先查找當(dāng)前容器池是否有待使用的資源,如果有,則用相應(yīng)的消息內(nèi)容填充對(duì)應(yīng)的頁(yè)面控件;如果沒(méi)有,則進(jìn)行相應(yīng)的創(chuàng)建動(dòng)作。當(dāng)用戶點(diǎn)擊回退控件按鈕時(shí),觸發(fā)當(dāng)前消息頁(yè)進(jìn)行析構(gòu),相應(yīng)地,對(duì)當(dāng)前頁(yè)面控件界面顯示的所有消息在消息池中減少相應(yīng)的引用計(jì)數(shù)值,另外將消息頁(yè)面及控件加入到內(nèi)部維護(hù)的容器池中以備下次使用。至此,該搜索微博消息的方法流程結(jié)束。圖4為本發(fā)明實(shí)施例搜索微博消息的裝置結(jié)構(gòu)示意圖。參見(jiàn)圖4,該裝置包括 搜索結(jié)果頁(yè)控件展示模塊、搜索邏輯類管理模塊、全文搜索邏輯模塊以及消息拉取模塊,其中,搜索結(jié)果頁(yè)控件展示模塊,用于創(chuàng)建分類的顯示頁(yè)面控件以及通用微博消息展示控件,接收封裝的通用微博消息展示控件并展示在所屬的顯示頁(yè)面;搜索邏輯類管理模塊,用于監(jiān)測(cè)來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,將監(jiān)測(cè)到的搜索請(qǐng)求輸出至全文搜索邏輯模塊,接收全文搜索邏輯模塊輸出的封裝的通用微博消息展示控件,輸出至搜索結(jié)果頁(yè)控件展示模塊;本實(shí)施例中,搜索邏輯類管理模塊用于搜索的邏輯管理,搜索請(qǐng)求包括廣播搜索請(qǐng)求、用戶搜索請(qǐng)求以及話題搜索請(qǐng)求。實(shí)際應(yīng)用中,隨著需求的增加,可以對(duì)搜索進(jìn)行擴(kuò)展,并可以基于類的繼承關(guān)系實(shí)現(xiàn)。實(shí)際應(yīng)用中,各種搜索請(qǐng)求的表現(xiàn)只是具體搜索的項(xiàng)(item)不同,例如,廣播搜索請(qǐng)求對(duì)應(yīng)消息item,話題搜索請(qǐng)求對(duì)應(yīng)話題item,用戶搜索請(qǐng)求對(duì)應(yīng)用戶item。這樣,可以通過(guò)向共同的父容器控件(搜索結(jié)果頁(yè)控件展示模塊)加入要展示的item控件列表實(shí)現(xiàn)。全文搜索邏輯模塊,用于接收搜索請(qǐng)求,輸出至消息拉取模塊,接收消息拉取模塊輸出的信息,將信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,形成封裝的通用微博消息展示控件,輸出至搜索邏輯類管理模塊;本實(shí)施例中,全文搜索邏輯模塊用于針對(duì)全文搜索的需求完成相應(yīng)與服務(wù)器 (server)的數(shù)據(jù)請(qǐng)求以及整個(gè)消息體的封裝過(guò)程。實(shí)際應(yīng)用中,全文搜索邏輯模塊根據(jù)搜索請(qǐng)求中攜帶的搜索關(guān)鍵詞以及分類頁(yè)面標(biāo)識(shí)查詢服務(wù)器,服務(wù)器返回對(duì)應(yīng)的消息標(biāo)識(shí)列表,全文搜索邏輯模塊將消息標(biāo)識(shí)列表攜帶在搜索請(qǐng)求中,輸出至消息拉取模塊。消息拉取模塊,用于接收搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的頁(yè)面控件的信息,輸出至全文搜索邏輯模塊。本實(shí)施例中,消息拉取模塊根據(jù)搜索請(qǐng)求中攜帶的消息標(biāo)識(shí)列表執(zhí)行拉取消息內(nèi)容的邏輯工作。即根據(jù)消息標(biāo)識(shí)列表的信息完成消息真實(shí)內(nèi)容的拉取,以及消息發(fā)送者相關(guān)信息(用戶資料)的拉取,并將對(duì)應(yīng)的信息組裝在一起,輸出至全文搜索邏輯模塊。實(shí)際應(yīng)用中,該裝置可以進(jìn)一步包括引用計(jì)數(shù)值存儲(chǔ)模塊,用于存儲(chǔ)信息以及信息對(duì)應(yīng)的引用計(jì)數(shù)值;引用計(jì)數(shù)值處理模塊,用于接收消息拉取模塊輸出的信息,查詢引用計(jì)數(shù)值存儲(chǔ)模塊中是否有對(duì)應(yīng)信息的引用計(jì)數(shù)值,如果沒(méi)有,存儲(chǔ)信息并設(shè)置信息的初始引用計(jì)數(shù)值為1,如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1 ;引用計(jì)數(shù)值更新模塊,用于查詢引用計(jì)數(shù)值存儲(chǔ)模塊中引用計(jì)數(shù)值為0的信息, 并刪除。實(shí)際應(yīng)用中,如前所述,微博消息采用的全文搜索呈現(xiàn)的消息與主頁(yè)呈現(xiàn)的消息, 無(wú)論在消息Item本身的界面排布上,還是承載所有消息的界面排布上,都是類似的,即都是按時(shí)間先后排列所有消息并進(jìn)行呈現(xiàn)。因此,可以采用程序化的框架設(shè)計(jì)來(lái)復(fù)用消息 Item控件以及對(duì)于消息Item的管理邏輯,并從中抽離出兩個(gè)比較大的層次結(jié)構(gòu)消息Item 控件邏輯管理結(jié)構(gòu)以及消息頁(yè)控件結(jié)構(gòu),下面進(jìn)行描述。圖5為消息Item控件邏輯管理結(jié)構(gòu)的系統(tǒng)架構(gòu)示意圖。參見(jiàn)圖5,包括消息頁(yè)控件排序接口 (IPageItemCtrl)、消息頁(yè)控件接口 (IMsgItemCtrl)、消息頁(yè)容器池接口(IPageItemContainer)、消息頁(yè)容器池聲明接口(CPageItemContainer)、消息頁(yè)模板控件接口(TPageItemCtrlMgr)、消息頁(yè)工廠接口(IPageItemFactory)以及消息控件接口 (MsgltemCtrlMgr),其中,與圖4中箭頭表示連接關(guān)系不同的是,指向圖中框邊界的箭頭表示繼承關(guān)系,指向圖中框內(nèi)部的箭頭表示對(duì)象的組合關(guān)系。IPageItemCtrl,用于抽離出對(duì)于微博消息item排序邏輯的依賴,保存用于微博消息時(shí)間排序的消息發(fā)表時(shí)間鍵值,即微博消息發(fā)布的時(shí)間信息;IMsgItemCtrl,用于微博消息item控件的接口聲明,例如,進(jìn)行微博消息item控件的初始化、更新微博消息item控件中的用戶昵稱等;IPageltemContainer,為用于獲取微博消息item父控件的容器相關(guān)屬性的接口 ;CPageItemContainer,為對(duì)應(yīng)接口的委托類的聲明,用于C++類的復(fù)用,通過(guò)將對(duì)應(yīng)C++類保存委托類的一個(gè)實(shí)例對(duì)象,并將this指針傳給TPageItemCtrlMgr用于回調(diào);IPageltemFactory,為創(chuàng)建對(duì)應(yīng)的IPageItemCtrl的工廠接口,通過(guò)對(duì)接口的實(shí)現(xiàn)創(chuàng)建不同的消息頁(yè)控件,例如,設(shè)置分類的頁(yè)面控件以及通用微博消息展示控件,創(chuàng)建微博消息頁(yè)控件、私信頁(yè)控件等;TpageItemCtrlMgr,為模板類,內(nèi)部保存 IPageItemContainer 接口的一個(gè)實(shí)例對(duì)象,并用于維護(hù)MsgItem的一個(gè)容器池(map保存),在創(chuàng)建MsgItem時(shí),首先查詢?cè)撊萜鞒刂惺欠裼写齼?chǔ)備的Msgltem,如果有,重新設(shè)置(set)數(shù)據(jù);否則,重新創(chuàng)建MsgItem ;另一個(gè)為創(chuàng)建itemctrl的工廠接口 IPageltemFactory的實(shí)例;本發(fā)明實(shí)施例中,TpageItemCtrlMgr中存在一個(gè)容器池,當(dāng)某一頁(yè)廣播消息頁(yè)面創(chuàng)建的時(shí)候,會(huì)首先查找當(dāng)前容器池是否有待使用的資源,如果有,則用相應(yīng)的消息內(nèi)容填充對(duì)應(yīng)的控件,而不需再付出創(chuàng)建控件頁(yè)及每個(gè)控件item的消耗;如果沒(méi)有,則進(jìn)行相應(yīng)的創(chuàng)建動(dòng)作。當(dāng)用戶點(diǎn)擊回退按鈕時(shí),表示當(dāng)前消息頁(yè)可以進(jìn)行析構(gòu),則首先對(duì)當(dāng)前頁(yè)顯示的所有消息在消息池中減少相應(yīng)的引用計(jì)數(shù),另外將消息頁(yè)面及控件item加入到內(nèi)部維護(hù)的容器池中以備下次使用。MsgItemCtrlMgr,用于為提供對(duì)于一個(gè)容器內(nèi)的所有MsgItem的增、刪、改接口及實(shí)現(xiàn),還用于處理一些業(yè)務(wù)邏輯,例如,對(duì)于所有MsgItem的界面排序處理以及諸如一些用戶微博消息展示改變、帳號(hào)昵稱改變、用戶昵稱改變的業(yè)務(wù)邏輯事件處理。圖6為本發(fā)明實(shí)施例的消息頁(yè)控件構(gòu)架示意圖。參見(jiàn)圖6,該消息頁(yè)控件構(gòu)架包括消息頁(yè)屬性接口(IPageAttribute)、消息頁(yè)控件接口(IMsgPageCtrl)、消息頁(yè)控件基接口(CMsgPageCtrlBase)、消息頁(yè)控件模板接口(TMsgPageCtrl)、消息頁(yè)容器池接口 (IPageItemContainer)以及消息控件接口(IMsgItemCtrlMgr),與圖5中相同的部分在此不再贅述,其中,指向圖中框邊界的箭頭表示繼承關(guān)系,指向圖中框內(nèi)部的箭頭表示對(duì)象的組合關(guān)系。IpageAttribute,為微博消息頁(yè)面的最原始接口,用于提供微博消息頁(yè)面類型、微博消息頁(yè)面關(guān)鍵(key)值以及微博消息頁(yè)面名字等的接口函數(shù);IMsgPageCtrl,為各種微博消息頁(yè)面的基接口,提供為派生類調(diào)用的接口,例如, 微博消息插入頁(yè)面前、以及微博消息插入頁(yè)面完畢后的一個(gè)公共邏輯處理部分;以及供各個(gè)派生類重載的接口,例如,微博消息頁(yè)面創(chuàng)建完畢,首次打開(kāi)微博消息頁(yè)面等的一個(gè)處理時(shí)機(jī);CMsgPageCtrlBase,用于對(duì) IMsgPageCtrl 接口的一個(gè)實(shí)現(xiàn),內(nèi)部維護(hù)了 MsgItemCtrlMgr的一個(gè)實(shí)例,用于處理消息插入頁(yè)面中的一些操作,以及對(duì)于整個(gè)頁(yè)面的加載消息的邏輯控制;TMsgPageCtrl,為消息頁(yè)面控件模板類,通過(guò)一系列對(duì)于接口的宏定義來(lái)達(dá)到使子類擁有基類的成員方法,即通過(guò)包容原始基類的對(duì)象實(shí)例在子類一層轉(zhuǎn)發(fā);IPageltemContainer,用于獲取父控件的容器相關(guān)屬性的接口。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種搜索微博消息的方法,其特征在于,該方法包括預(yù)先設(shè)置分類的顯示頁(yè)面控件以及通用微博消息展示控件;接收來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息;將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,并展示在所屬的顯示頁(yè)面。
2.如權(quán)利要求1所述的方法,其特征在于,所述通用微博消息展示控件中設(shè)置有通用的展示格式、展示內(nèi)容以及展示位置信息,通過(guò)將信息填充至相應(yīng)用戶的微博消息展示控件中預(yù)先設(shè)置的相應(yīng)位置,形成該用戶的微博消息展示控件并依序進(jìn)行展示。
3.如權(quán)利要求2所述的方法,其特征在于,根據(jù)預(yù)先設(shè)置的策略計(jì)算微博消息展示控件內(nèi)部各個(gè)區(qū)域的大小及相應(yīng)位置,在相應(yīng)的區(qū)域采用自繪的方式繪制控件效果。
4.如權(quán)利要求3所述的方法,其特征在于,所述展示在所屬的顯示頁(yè)面具體包括預(yù)先設(shè)置每個(gè)顯示頁(yè)面控件下的微博消息展示控件數(shù)量,并根據(jù)微博消息展示控件數(shù)量確定順序排列的用戶微博消息展示控件在顯示頁(yè)面控件下的展示位置;確定形成的用戶微博消息展示控件在顯示頁(yè)面控件下的排列序號(hào),在該排列序號(hào)對(duì)應(yīng)的顯示頁(yè)面控件下的展示位置進(jìn)行展示。
5.如權(quán)利要求1所述的方法,其特征在于,所述分類的顯示頁(yè)面控件包括用戶顯示頁(yè)面控件、話題顯示頁(yè)面控件以及廣播顯示頁(yè)面控件。
6.如權(quán)利要求5所述的方法,其特征在于,所述廣播顯示頁(yè)面控件包括同城廣播頁(yè)面控件、熱門(mén)廣播頁(yè)面控件以及廣播分類頁(yè)面控件。
7.如權(quán)利要求1所述的方法,其特征在于,所述獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息具體包括客戶端將搜索請(qǐng)求輸出至服務(wù)器,攜帶搜索關(guān)鍵詞以及分類頁(yè)面標(biāo)識(shí);服務(wù)器接收搜索請(qǐng)求,根據(jù)分類頁(yè)面標(biāo)識(shí)獲取需要搜索的分類頁(yè)面表項(xiàng),再?gòu)姆诸愴?yè)面表項(xiàng)中根據(jù)搜索關(guān)鍵詞獲取對(duì)應(yīng)的信息并下發(fā)至客戶端。
8.如權(quán)利要求7所述的方法,其特征在于,所述下發(fā)至客戶端具體包括根據(jù)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包最大字節(jié)數(shù)以及信息的平均字節(jié)數(shù),設(shè)置下發(fā)信息的條數(shù),如果服務(wù)器搜索獲取的信息條數(shù)大于預(yù)先設(shè)置的下發(fā)信息的條數(shù),根據(jù)預(yù)先設(shè)置的下發(fā)信息的條數(shù)下發(fā)信息,攜帶未下發(fā)完畢標(biāo)識(shí),并存儲(chǔ)剩下的信息;接收下一頁(yè)信息拉取請(qǐng)求,從存儲(chǔ)的剩下的信息中,按照預(yù)先設(shè)置的下發(fā)信息的條數(shù)下發(fā)信息,直至存儲(chǔ)的剩下的信息下發(fā)完畢。
9.如權(quán)利要求1所述的方法,其特征在于,所述將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置具體包括客戶端獲取服務(wù)器下發(fā)的包括用戶資料以及廣播消息的信息,按照接收的廣播消息條數(shù)復(fù)用通用微博消息展示控件,并按照廣播消息發(fā)布的時(shí)間順序,將對(duì)應(yīng)的用戶資料以及廣播消息填充至通用微博消息展示控件的相應(yīng)位置。
10.如權(quán)利要求1至9任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括存儲(chǔ)獲取的信息,判斷存儲(chǔ)的信息數(shù)量是否達(dá)到預(yù)先設(shè)置的閾值,如果是,按照預(yù)先設(shè)置的淘汰算法策略更新存儲(chǔ)的信息。
11.如權(quán)利要求1至9任一項(xiàng)所述的方法,其特征在于,進(jìn)一步包括存儲(chǔ)獲取的信息,根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新,根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息。
12.如權(quán)利要求11所述的方法,其特征在于,所述根據(jù)預(yù)先設(shè)置的策略對(duì)存儲(chǔ)的信息的引用計(jì)數(shù)值進(jìn)行更新具體包括查詢?cè)摦?dāng)前存儲(chǔ)的信息是否設(shè)置有引用計(jì)數(shù)值,如果沒(méi)有,設(shè)置信息的初始引用計(jì)數(shù)值為1,如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;或者,確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1。
13.如權(quán)利要求12所述的方法,其特征在于,所述根據(jù)信息的引用計(jì)數(shù)值更新存儲(chǔ)的信息具體包括查詢存儲(chǔ)的信息的引用計(jì)數(shù)值,并將引用計(jì)數(shù)值為0的信息刪除。
14.一種搜索微博消息的裝置,其特征在于,該裝置包括搜索結(jié)果頁(yè)控件展示模塊、 搜索邏輯類管理模塊、全文搜索邏輯模塊以及消息拉取模塊,其中,搜索結(jié)果頁(yè)控件展示模塊,用于創(chuàng)建分類的顯示頁(yè)面控件以及通用微博消息展示控件,接收封裝的通用微博消息展示控件并展示在所屬的顯示頁(yè)面;搜索邏輯類管理模塊,用于監(jiān)測(cè)來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,將監(jiān)測(cè)到的搜索請(qǐng)求輸出至全文搜索邏輯模塊,接收全文搜索邏輯模塊輸出的封裝的通用微博消息展示控件, 輸出至搜索結(jié)果頁(yè)控件展示模塊;全文搜索邏輯模塊,用于接收搜索請(qǐng)求,輸出至消息拉取模塊,接收消息拉取模塊輸出的信息,將信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,形成封裝的通用微博消息展示控件,輸出至搜索邏輯類管理模塊;消息拉取模塊,用于接收搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的頁(yè)面控件的信息,輸出至全文搜索邏輯模塊。
15.如權(quán)利要求14所述的裝置,其特征在于,進(jìn)一步包括引用計(jì)數(shù)值存儲(chǔ)模塊,用于存儲(chǔ)信息以及信息對(duì)應(yīng)的引用計(jì)數(shù)值;引用計(jì)數(shù)值處理模塊,用于接收消息拉取模塊輸出的信息,查詢引用計(jì)數(shù)值存儲(chǔ)模塊中是否有對(duì)應(yīng)信息的引用計(jì)數(shù)值,如果沒(méi)有,存儲(chǔ)信息并設(shè)置信息的初始引用計(jì)數(shù)值為1, 如果有,將設(shè)置的該信息的引用計(jì)數(shù)值加1 ;確定顯示頁(yè)面控件析構(gòu),將存儲(chǔ)的該顯示頁(yè)面控件對(duì)應(yīng)的信息的引用計(jì)數(shù)值減1 ;引用計(jì)數(shù)值更新模塊,用于查詢引用計(jì)數(shù)值存儲(chǔ)模塊中引用計(jì)數(shù)值為0的信息,并刪除。
全文摘要
本發(fā)明公開(kāi)了一種搜索微博消息的方法。該方法包括預(yù)先設(shè)置分類的顯示頁(yè)面控件以及通用微博消息展示控件;接收來(lái)自顯示頁(yè)面控件的搜索請(qǐng)求,獲取搜索請(qǐng)求所屬的顯示頁(yè)面控件的信息;將獲取的信息依序按照通用微博消息展示控件的設(shè)置插入通用微博消息展示控件的相應(yīng)位置,并展示在所屬的顯示頁(yè)面。本發(fā)明還公開(kāi)了一種搜索微博消息的裝置。應(yīng)用本發(fā)明,可以降低用戶搜索所需微博消息的時(shí)間、提高用戶體驗(yàn)。
文檔編號(hào)H04L12/58GK102446193SQ20101050695
公開(kāi)日2012年5月9日 申請(qǐng)日期2010年10月11日 優(yōu)先權(quán)日2010年10月11日
發(fā)明者庫(kù)宇 申請(qǐng)人:騰訊科技(深圳)有限公司