亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法與流程

文檔序號(hào):12802687閱讀:2069來(lái)源:國(guó)知局
一種基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法與流程

本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法。



背景技術(shù):

目前,對(duì)于一個(gè)網(wǎng)站來(lái)說(shuō),無(wú)論是門戶網(wǎng)站還是電商網(wǎng)站,搜索框都有著比較重要的地位,它的存在是為了讓用戶更快、更方便的去搜索自己想要的東西。

搜索聯(lián)想詞在各大門戶和電商網(wǎng)站得到了廣泛的應(yīng)用,搜索智能提示功能,可以幫助用戶盡快找到自己想要的。當(dāng)用戶輸入想要搜索的首字符或其中被包含的字符時(shí),搜索下拉框就會(huì)出現(xiàn)可供用戶選擇的條目,用戶可以選擇其中的條目來(lái)完成此次搜索,避免了用戶輸入全部的字符,改善了用戶體驗(yàn)。

搜索聯(lián)想詞功能通過(guò)分析用戶輸入字符串,動(dòng)態(tài)推薦關(guān)鍵詞,在個(gè)性化搜索中有著很重要的作用。

現(xiàn)有的搜索聯(lián)想詞功能實(shí)現(xiàn),比如,數(shù)據(jù)庫(kù)中的like“%關(guān)鍵詞%”來(lái)實(shí)現(xiàn),但是只有包含關(guān)鍵詞的詞條才會(huì)命中,如果中間加個(gè)空格,這種方法就無(wú)能為力了,并且如果想對(duì)命中結(jié)果進(jìn)行相關(guān)度排序,這種方法也無(wú)法實(shí)現(xiàn)。

因此,針對(duì)現(xiàn)有方法存在不足,本發(fā)明提出一種基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法,能夠使得用戶快速找到搜索關(guān)鍵詞,更能滿足用戶的需求。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明的主要目的在于提供一種基于redis技術(shù)的搜索聯(lián)想詞的方法,在用戶輸入搜索關(guān)鍵詞的過(guò)程中,系統(tǒng)給出搜索的推薦關(guān)鍵詞。

為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:

a、搜索關(guān)鍵詞預(yù)處理;

b、創(chuàng)建索引;

c、設(shè)置搜索意圖權(quán)重;

d、聯(lián)想詞的展示。

其中所述步驟a處理過(guò)程為:對(duì)于一個(gè)搜索關(guān)鍵詞的聯(lián)想分為以下幾種情況,文字相關(guān)、完整輸入、拼音、首字母、文字前綴。判斷關(guān)鍵詞是否為空,是否長(zhǎng)度為1,是否還有特殊字符,是否含有空格。

其中所述步驟b主要包括以下兩個(gè)流程:

b1、使用solrj創(chuàng)建關(guān)鍵詞指向搜索意圖的索引

先對(duì)搜索關(guān)鍵詞使用分詞器(如,ikanalyzer分詞器)進(jìn)行分詞處理,加入到redis有序集合(sortedset),需要注意的是:添加到redis中時(shí)候,score的值設(shè)置為0,這些字符就會(huì)按照自然排好序。

另外,搜索聯(lián)想詞功能,實(shí)時(shí)性要求比較高,需要頻繁地請(qǐng)求數(shù)據(jù)庫(kù),本發(fā)明用性能高和速度快的內(nèi)存數(shù)據(jù)庫(kù)redis來(lái)存儲(chǔ)。其中所采用的redis是kv型數(shù)據(jù)庫(kù),查詢都是基于key的,key值必須具有唯一性。

b2、使用solrj創(chuàng)建關(guān)鍵詞前綴指向關(guān)鍵詞的索引

創(chuàng)建搜索關(guān)鍵詞各種前綴的索引,首先通過(guò)用戶的輸入,來(lái)找到這個(gè)關(guān)鍵詞,進(jìn)而通過(guò)關(guān)鍵詞找到搜索意圖,所以需要建立文字前綴以及拼音前綴到關(guān)鍵詞的一個(gè)索引。其中所述的拼音前綴使用pinyin4j進(jìn)行轉(zhuǎn)換,關(guān)鍵詞擁有多少前綴,就會(huì)建立多少個(gè)有序集合key,每個(gè)key里都保存著value集合。

其中所述步驟c主要操作如下:

創(chuàng)建索引時(shí)候使用redis有序集合,這樣每一個(gè)key所對(duì)應(yīng)的集合都是有序的,并且每一個(gè)集合中的value都有score值,即通過(guò)score來(lái)排序。

進(jìn)一步地,其中所述步驟d操作如下:用戶在搜索的時(shí)候,根據(jù)用戶的輸入去匹配搜索次數(shù)多的關(guān)鍵詞,展示topn個(gè)聯(lián)想詞。主要通過(guò)兩個(gè)方法來(lái)實(shí)現(xiàn):

d1、創(chuàng)建一個(gè)getsuggestproductname(solrqueryparams,stringsellercode)方法,該方法聯(lián)想的為商品名稱,不是單個(gè)的詞,最后返回一個(gè)list<string>聯(lián)想詞列表,其中所述的params為用戶的搜索輸入?yún)?shù),sellercode為索引庫(kù)分片。

d2、創(chuàng)建一個(gè)getsuggestlxc(solrqueryparams,stringsellercode)方法,該方法可根據(jù)拼音、拼音首字母聯(lián)想,聯(lián)想出來(lái)的為詞組,不再是商品名稱,最后返回一個(gè)list<string>聯(lián)想詞列表,其中所述的params為用戶的搜索輸入?yún)?shù),sellercode為索引庫(kù)分片。

本發(fā)明所提供的搜索聯(lián)想詞的方法,具有以下優(yōu)點(diǎn):

1)用戶在進(jìn)行搜索時(shí)候,通過(guò)分析用戶輸入的字符串,動(dòng)態(tài)推薦關(guān)鍵詞,使得用戶更快找到所需關(guān)鍵詞;

2)用戶可以選擇其中的條目來(lái)完成此次搜索,避免了用戶輸入全部的字符,改善了用戶體驗(yàn)。

附圖說(shuō)明

圖1為本發(fā)明基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法的流程示意圖;

圖2為本發(fā)明基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法的應(yīng)用場(chǎng)景示意圖;

圖3為本發(fā)明基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法的聯(lián)想結(jié)果展示示意圖。

具體實(shí)施方式

為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖及本發(fā)明的實(shí)施例對(duì)本發(fā)明的基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法作進(jìn)一步詳細(xì)的說(shuō)明。

在用戶輸入搜索的過(guò)程中,系統(tǒng)給出搜索的推薦關(guān)鍵詞,實(shí)現(xiàn)的方式通過(guò)redis的5種數(shù)據(jù)結(jié)構(gòu)中的有序集合(zset)。把這些熱搜詞存進(jìn)redis中。就是把要操作的指令存放到一個(gè)隊(duì)列中,最后把這個(gè)隊(duì)列扔到服務(wù)端去執(zhí)行,這樣就有效的減少了不必要的網(wǎng)絡(luò)傳輸,同時(shí)也提高了執(zhí)行速度。

參考圖2,該搜索聯(lián)想詞的方法,具體包含以下幾個(gè)流程:

步驟201:搜索聯(lián)想詞預(yù)處理;判斷關(guān)鍵詞是否為空,是否長(zhǎng)度為1,是否還有特殊字符,是否含有空格。

步驟202:先把每個(gè)詞拆分出來(lái),存進(jìn)redis中;對(duì)搜索關(guān)鍵詞使用分詞器(如,ikanalyzer分詞器)進(jìn)行分詞處理,加入到redis有序集合(sortedset),注意添加到redis時(shí)score都設(shè)置為0,這些字符就會(huì)按照自然排好序。

步驟203:創(chuàng)建關(guān)鍵詞指向搜索意圖的索引;創(chuàng)建搜索關(guān)鍵詞各種前綴的索引,首先通過(guò)用戶的輸入,來(lái)找到這個(gè)關(guān)鍵詞,進(jìn)而通過(guò)關(guān)鍵詞找到搜索意圖,所以需要建立文字前綴以及拼音前綴到關(guān)鍵詞的一個(gè)索引。其中所述的拼音前綴使用java開源類庫(kù)(如,pinyin4j技術(shù))進(jìn)行轉(zhuǎn)換,關(guān)鍵詞擁有多少前綴,就會(huì)建立多少個(gè)有序集合key,每個(gè)key里都保存著value集合。

步驟204:設(shè)置搜索意圖的權(quán)重;創(chuàng)建索引時(shí)候使用redis有序集合,這樣每一個(gè)key所對(duì)應(yīng)的集合都是有序的,并且每一個(gè)集合中的value都有score值,即通過(guò)score來(lái)排序。

步驟205:搜索聯(lián)想詞展示;根據(jù)用戶的輸入去匹配搜索次數(shù)多的關(guān)鍵詞,展示topn個(gè)聯(lián)想詞。主要通過(guò)兩個(gè)方法來(lái)實(shí)現(xiàn):如果用戶傳入?yún)?shù)為lxcproductname,則執(zhí)行步驟206,如果用戶傳入?yún)?shù)為lxc,則執(zhí)行步驟207。

步驟206:創(chuàng)建一個(gè)getsuggestproductname(solrqueryparams,stringsellercode)方法,該方法聯(lián)想的為商品名稱,不是單個(gè)的詞,最后返回一個(gè)list<string>聯(lián)想詞列表,其中所述的params為用戶的搜索輸入?yún)?shù),sellercode為索引庫(kù)分片。

步驟207:創(chuàng)建一個(gè)getsuggestlxc(solrqueryparams,stringsellercode)方法,該方法可根據(jù)拼音、拼音首字母聯(lián)想,聯(lián)想出來(lái)的為詞組,不再是商品名稱,最后返回一個(gè)list<string>聯(lián)想詞列表,其中所述的params為用戶的搜索輸入?yún)?shù),sellercode為索引庫(kù)分片。

需要注意的是:用戶點(diǎn)擊搜索之后,無(wú)論是新的關(guān)鍵詞還是已有的關(guān)鍵詞,首先對(duì)關(guān)鍵詞進(jìn)行預(yù)處理,然后用redis中zincrby命令來(lái)處理,如果存在的,分?jǐn)?shù)加1,或者就創(chuàng)建一個(gè)分?jǐn)?shù)為1的成員。限制了用戶不能搜索空關(guān)鍵字,在把這個(gè)關(guān)鍵字存儲(chǔ)或者分?jǐn)?shù)加一之后,通過(guò)solr全文檢索查詢,較佳的展示推薦搜索聯(lián)想詞結(jié)果。

本發(fā)明為解決搜索聯(lián)想詞的問題,主要采用了以下技術(shù),下面對(duì)這些技術(shù)進(jìn)行簡(jiǎn)單介紹。

1)pinyin4j技術(shù)。pinyin4j是一個(gè)支持將中文轉(zhuǎn)換到拼音的java開源類庫(kù),能夠根據(jù)中文字符獲取其對(duì)應(yīng)的拼音,而且拼音的格式可以定制。支持簡(jiǎn)體中文和繁體中文字符,支持轉(zhuǎn)換到漢語(yǔ)拼音,支持多音字,即可以獲取一個(gè)中文字符的多種發(fā)音,支持多種字符串輸出格式。本發(fā)明主要是在對(duì)用戶輸入關(guān)鍵詞處理時(shí)候使用pinyin4j技術(shù)。

2)redis技術(shù)。redis是一款開源的、高性能的鍵-值存儲(chǔ)(key-valuestore)。它常被稱作是一款數(shù)據(jù)結(jié)構(gòu)服務(wù)器(datastructureserver)。redis的鍵值可以包括字符串(strings)類型,同時(shí)它還包括哈希(hashes)、列表(lists)、集合(sets)和有序集合(sortedsets)等數(shù)據(jù)類型。對(duì)于這些數(shù)據(jù)類型,可以執(zhí)行原子操作。redis采用了內(nèi)存中(in-memory)數(shù)據(jù)集(dataset)的方式。同時(shí),redis支持?jǐn)?shù)據(jù)的持久化,你可以每隔一段時(shí)間將數(shù)據(jù)集轉(zhuǎn)存到磁盤上(snapshot),或者在日志尾部追加每一條操作命令(appendonlyfile,aof)。本發(fā)明主要使用了5種數(shù)據(jù)結(jié)構(gòu)中的有序集合,每個(gè)有序集合的成員都關(guān)聯(lián)著一個(gè)評(píng)分,這個(gè)評(píng)分用于把有序集合中的成員按最低分到最高分排列,主要用在搜索聯(lián)想詞存儲(chǔ)模塊。

3)ikaanlyzer分詞技術(shù)。本發(fā)明主要在用戶輸入關(guān)鍵詞預(yù)處理時(shí)候使用了ikaanlyzer分詞技術(shù)。

4)solrj技術(shù)。solrj是solr的java客戶端,用于訪問solr索引庫(kù)。它提供了添加、刪除、查詢、優(yōu)化等功能。本發(fā)明使用solrj創(chuàng)建索引,來(lái)操作索引庫(kù)。

參考圖1,本發(fā)明的搜索聯(lián)想詞實(shí)施例如下。

下面介紹該方法的幾個(gè)典型應(yīng)用場(chǎng)景:

應(yīng)用場(chǎng)景一:

本發(fā)明搜索聯(lián)想詞方法應(yīng)用在某廢舊塑料再生網(wǎng)站首頁(yè)搜索框展示頁(yè),用戶搜索廢鋼鐵,當(dāng)輸入“廢”字,下拉框會(huì)展現(xiàn)搜索聯(lián)想詞列表,如圖3所示。

應(yīng)用場(chǎng)景二:

本發(fā)明的基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法,用戶在搜索商品,當(dāng)用戶輸入“塑”關(guān)鍵字時(shí)候,搜索框系統(tǒng)給出下拉列表,供用戶選擇所需要的關(guān)鍵詞。系統(tǒng)動(dòng)態(tài)的給出聯(lián)想詞結(jié)果:

{"resultcode":1,"resultmessage":"","params":{"keyword":"","num":10},

"associatekeyword":[{"keyword":"塑料"},{"keyword":"塑鋼門窗"},

{"keyword":"塑膠地板"},{"keyword":"塑膠"},{"keyword":"塑膠原料"},

{"keyword":"塑鋼"},{"keyword":"塑鋼型材",},{"keyword":"塑膠跑道"},

{"keyword":"塑粉"},{"keyword":"塑膠管"},{"keyword":"塑料薄膜"}]}

以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。

所述領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。

在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述到的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性、機(jī)械或其它的形式。

所述作為分離部件說(shuō)明的單元可以是或者也可以是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),可以采用軟件功能單元的形式實(shí)現(xiàn)。

需要說(shuō)明的是,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(read-onlymemory,rom)或隨機(jī)存儲(chǔ)記憶體(randomaccessmemory,ram)等。

以上對(duì)本發(fā)明所提供的基于redis技術(shù)的搜索聯(lián)想詞實(shí)現(xiàn)方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1