OpenSearch行業(yè)搜索解決方案之O2O_第1頁
OpenSearch行業(yè)搜索解決方案之O2O_第2頁
OpenSearch行業(yè)搜索解決方案之O2O_第3頁
OpenSearch行業(yè)搜索解決方案之O2O_第4頁
OpenSearch行業(yè)搜索解決方案之O2O_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、OpenSearch行業(yè)搜索解決方案之O2OOpenSearch典型行業(yè)搜索解決方案之 O2O目錄OpenSearch典型行業(yè)搜索解決方案1之 O2O11、概述22、解決方案22.1創(chuàng)建應(yīng)用52.1.1、配置數(shù)據(jù)表62.1.2、配置搜索屬性72.2、數(shù)據(jù)上傳82.3、搜索效果配置102.3.1 搜索相關(guān)性配置102.3.2 搜索結(jié)果摘要132.3.3 查詢分析132.3.4 下拉提示142.4、搜索152.4.1 初始列表頁152.4.2 排序功能172.4.2 美食搜索192.4.3 鮮花列表頁202.4.4 搜索小結(jié)203、其他日常功能項(xiàng)213.1 錯誤日志213.2 索引重建213.3

2、數(shù)據(jù)統(tǒng)計211、概述 O2O即Online To Offline(在線離線/線上到線下),是指將線下的商務(wù)機(jī)會與互聯(lián)網(wǎng)結(jié)合,讓互聯(lián)網(wǎng)成為線下交易的平臺。O2O的概念已經(jīng)落地,各大集團(tuán)公司都陸續(xù)開始涉水,爭奪勢頭愈演愈烈,各個行業(yè)遍地開花,如外賣、電影、wifi、機(jī)票、度假、酒店等,也正積極的影響著人民的生活,帶來了極大便利性。這里的產(chǎn)品對搜索依賴比較重,大部分人的需求比較明確,比如機(jī)票起點(diǎn)終點(diǎn)、度假地點(diǎn)、飯店、酒店等,即使沒有輸入的初始列表頁,因?yàn)樾枰鶕?jù)距離等做一些排序,所以一般也會通過搜索的方式來獲取,有效的做到千人千面的效果。 今天我們就以口碑來看如何利用OpenSearch來建立一個外

3、賣檢索系統(tǒng)。O2O具有很大的LBS共性,其他O2O行業(yè)的產(chǎn)品可以同類參考。 開始之前,先來個廣告:)口碑外賣-品質(zhì)外賣,美食到家口碑外賣是一款解決你“懶”,提供你品質(zhì)服務(wù)的貼身應(yīng)用。各類優(yōu)惠活動,美食甜點(diǎn),鮮花超市,你絕對會無情的為我點(diǎn)贊! 當(dāng)然,我的服務(wù)和體驗(yàn)絕對會讓你喊嗨! 首先,你是一個人或者想嘗鮮,再或者你太忙,還有“懶”,上口碑外賣就對了。特色小吃、美食外賣、甜點(diǎn)飲品、超市便利還有鮮花等等,只要你想要的,重點(diǎn)在吃,我都有! 其次,我想說,不管你在哪里,上班路上、游戲中、加班中、三亞海島還是東北那嘎子,只要你想,我都在!上百萬家的餐廳,上萬家的大牌商家,滿足你沒問題

4、! 超多品牌外賣如必勝客,肯德基,麥當(dāng)勞,弄堂里,德克士,永和大王,均已入駐,各種美食,超市百貨,鮮花蛋糕,中餐,西餐,小吃,快餐,火鍋,燒烤,飲品甜點(diǎn),讓你足不出戶就能叫外賣送餐上門。2、解決方案首先我們來看下口碑外賣首頁,可以看到外賣中有很多分類:美食、甜點(diǎn)、生鮮、鮮花、醫(yī)藥等,非常豐富;排序與篩選條件也非常靈活,可以滿足日常使用中的各種需求。目前僅提供了店名和菜品的獨(dú)立搜索框,后續(xù)應(yīng)該會有更多的入口開放出來。鮮花頻道列表頁:外賣及商品搜索:建議開始前先粗覽一遍產(chǎn)品文檔,本文假設(shè)前提:您已經(jīng)了解了OpenSearch的基本功能;您的場景適合使用OpenSearch;您接受Open

5、Search的服務(wù)條款。關(guān)于OpenSearch的基本知識,不在本文討論范圍內(nèi),如有疑問,可以到論壇或者工單上提問。要實(shí)現(xiàn)上圖中的搜索功能只需要在OpenSearch中進(jìn)行4步:2.1創(chuàng)建應(yīng)用一個應(yīng)用即為一個獨(dú)立的搜索服務(wù),簡單理解就是一個搜索框。首先進(jìn)入到OpenSearch控制臺,創(chuàng)建應(yīng)用: 填寫應(yīng)用名、選擇好地域、備注:點(diǎn)擊下一步。2.1.1、配置數(shù)據(jù)表OpenSearch是結(jié)構(gòu)化的搜索服務(wù),首先我們需要定義表的結(jié)構(gòu),這里的字段一般是要用來查詢、過濾、統(tǒng)計、展示的字段,其他無關(guān)字段無需進(jìn)入OpenSearch中。以口碑外賣為例,我們定義應(yīng)用結(jié)構(gòu)如下:(本文主要是為了演示,只選取了必要字段

6、,具體需要根據(jù)自己的場景來添加、修改或者刪除) 這一步非常關(guān)鍵,很多同學(xué)并不知道如何配置,是否需要與數(shù)據(jù)庫中字段一致,答案是不需要的,這里的字段均來自搜索需求。所以首先需要明確產(chǎn)品上需要做成的效果(如下圖)、過濾(配送范圍、營業(yè)時間等)、排序(距離、評分、銷量、文本匹配度等因素)等需求。 從上圖可以看出,頁面展示的信息都必須在搜索中出現(xiàn)并且可展示,那么就出現(xiàn)了以下字段:注意這里的關(guān)聯(lián)關(guān)系,主表字段只能關(guān)聯(lián)附表主鍵。 這里之所以使用了多表,是因?yàn)樵趯?shí)際業(yè)務(wù)中商家與菜品不會放在一張表中做存儲,為了方便用戶按原業(yè)務(wù)表推送數(shù)據(jù),所以系統(tǒng)也支持了多表功能。當(dāng)然,您也可以放在一張表,尋找最適合自己的方案即

7、可。 如果配置錯誤也沒有關(guān)系,系統(tǒng)提供了動態(tài)修改應(yīng)用結(jié)構(gòu)功能,您可以隨時調(diào)整,不用擔(dān)心。2.1.2、配置搜索屬性多表只是為了方便推送數(shù)據(jù),進(jìn)入搜索引擎中的數(shù)據(jù)都是打平成大寬表的數(shù)據(jù),所以搜索的時候不再有表的概念,這一步就來定義各個字段的搜索屬性。這里是否要勾選需要根據(jù)實(shí)際搜索場景產(chǎn)品需求來定,另外細(xì)分類型非常重要,尤其是TEXT字段,不同的子類型代表不同的分詞效果,需要慎重選擇。選擇自己想要的,后續(xù)經(jīng)過測試再不斷的調(diào)整優(yōu)化。 這里再重點(diǎn)說下可搜索與索引到,一個源段可以索引到多個索引字段上(如title索引到title、compound上),多個原字段也可以索引到同一個索引字段上(如title、

8、body、seller_name索引到compound上),具體如何配置同樣是根據(jù)搜索需求來。產(chǎn)品上需要綜合搜索,比如只要門店名、菜品名、菜品描述中有一項(xiàng)包含都希望搜索出來,那么可以將上述幾個字段索引到同一個索引字段上,搜索的時候使用query=compound:外婆家,那么門店名、菜品名、菜品中有一項(xiàng)包含外婆家都會被召回。另外,產(chǎn)品上還希望提供按照菜品名搜索,那么可以單獨(dú)將title索引到title上,那么query=title:外婆家只會召回菜品名中包含外婆家的菜,門店中包含則不會被召回。2.2、數(shù)據(jù)上傳這里有兩種選擇,一種是后續(xù)通過API/SDK方式上傳(具體參考產(chǎn)品文檔的API/SDK

9、參考手冊),一種是通過數(shù)據(jù)源的方式導(dǎo)入,目前支持RDSODPSOSS,這里以RDS源為例,其他類似(具體參考產(chǎn)品文檔數(shù)據(jù)源配置) 同理,配置好seller表與RDS的映射關(guān)系(注意:array字段需要通過MultiValueSpliter插件來進(jìn)行解析)繼續(xù)點(diǎn)擊下一步,檢查無誤后即創(chuàng)建成功,按照提示進(jìn)行應(yīng)用激活以及索引重建操作(第一次RDS需要導(dǎo)入全量,后續(xù)走增量即可,無需再索引重建)。2.3、搜索效果配置經(jīng)過上面的做法,數(shù)據(jù)已經(jīng)上傳完畢,可以搜索了。在搜索之前我們還需要進(jìn)行下相關(guān)搜索效果的配置,已保證獲取更優(yōu)的展示效果。目前OpenSearch主要提供如下功能的支持,讓我們來分別看一下:2.

10、3.1 搜索相關(guān)性配置搜索引擎找到查詢數(shù)據(jù)后,會對查詢到的文檔進(jìn)行排序,并按照排序后的順序返回給用戶,用戶可以采用翻頁的方式來進(jìn)行數(shù)據(jù)展示。目前OpenSearch支持sort多維排序,在本文的案例中,我們需要使用到系統(tǒng)相關(guān)性表達(dá)式的功能。目前系統(tǒng)提供的相關(guān)性開放了兩輪的排序規(guī)則:粗排與精排。粗排即是海選,將符合條件的文檔進(jìn)行粗排表達(dá)式計算得分,然后選取TOP N再進(jìn)行精排表達(dá)式計算,最終按照精排得分排序后返回結(jié)果。從上面的處理邏輯來看,粗排因?yàn)樯婕拔臋n多,所以需要盡量簡單(匹配的文檔越多對于粗排表達(dá)式要求越高,否則會有好的文檔進(jìn)不了精排,無法展示的情況出現(xiàn)),將質(zhì)量高的文檔挑選出來即可,然后

11、再根據(jù)精排來詳細(xì)算分,做排序。 這里粗排表達(dá)式我們選取了兩部分,二者之間的權(quán)重為2:1:1, 首先,對于關(guān)鍵詞查詢,最重要的還是文本匹配度,所以這里選擇了static_bm25();2, 其次,對于外賣來講,店鋪質(zhì)量也非常重要,所以這里選擇了takeout_score。精排表達(dá)式如下,這里主要有如下幾個因素考慮:1,首先,對于一個文本匹配的場景,需要考慮文本匹配的程度,相關(guān)性越高分值越高;這里的text_relevance()(包含三方面內(nèi)容的考慮:bm25、proximity以及match_doc度)。2,其次,對于O2O場景來講,距離是不可避免的考慮因素,距離越近理論上配送速度越快,用戶體

12、驗(yàn)越好,所以這里增加了distance(),并使用gauss函數(shù)對距離值進(jìn)行衰減,使其值域統(tǒng)一到0,1上;3, 對于外賣場景,還需要考慮門店是否營業(yè),同樣是影響配送速度的一個重要因素。所以,這里也增加了營業(yè)時間的判斷。4, 外賣店鋪本身的熱門程度也是一個非常重要的因素,所以這里也增加了takeout_score的排序因子。這里的takeout_score可以由很多因素來決定:品牌、受歡迎程度、用戶評分、配送速度等等綜合計算出來的一個店鋪質(zhì)量分。 確定主體排序因子后,根據(jù)各個排序因子之間值域以及重要程度進(jìn)行合適的權(quán)重調(diào)整即可,這部分工作需要實(shí)際搜索效果中不斷調(diào)試。目前相關(guān)性調(diào)試最常見的ABTes

13、t,尋找50%的TopQuery、20%長尾Query(即結(jié)果數(shù)非常少的查詢)、30%常規(guī)Query(普通查詢)進(jìn)行效果人工排查,發(fā)現(xiàn)badcase后分析原因,然后調(diào)整排序表達(dá)式,以此不斷優(yōu)化,達(dá)到最佳效果。設(shè)置成功后,別忘了點(diǎn)擊保存按鈕。一般來講,一個新的排序表達(dá)式設(shè)置后可以先通過API接口顯示指定first_formula_name以及formula_name來進(jìn)行效果測試,并根據(jù)測試結(jié)果不斷調(diào)整,效果滿意后,可以將其設(shè)置為默認(rèn)即可。一旦設(shè)置為默認(rèn),則立即對線上查詢起作用,無需發(fā)布變更,非常方便。此外,對于較為復(fù)雜的搜索場景來講,可以設(shè)置多個排序表達(dá)式以滿足不同的查詢場景。如下例中展示,搜

14、索菜品的時候可以使用goods表達(dá)式,搜索門店的時候可以使用seller的表達(dá)式,綜合搜索的場景使用second即可。2.3.2 搜索結(jié)果摘要摘要顧名思義就是文章的簡介,一般來講,文章內(nèi)容都會比較長,在搜索結(jié)果中不可能全部展示,這時候就需要設(shè)置摘要信息,您可以配置改摘要的片段個數(shù)、片段長度以及片段連接符,片段選取跟查詢詞有關(guān),通常選取關(guān)鍵詞所在的一個或者多個句子。同時,OpenSearch也提供了飄紅功能,用來做查詢詞的高亮顯示。2.3.3 查詢分析查詢分析主要是為了做查詢優(yōu)化的,他存在的目的就是為了深度解析查詢詞意圖,并智能改寫,比如一個查詢地址:杭州市西湖區(qū)文一西路969號,能自動識別并改

15、寫成city:杭州市 AND district:西湖區(qū) AND address:文一西路969號。當(dāng)然這里只是舉個例子,目前還未提供該功能,現(xiàn)在支持4部分:停用詞(不參與搜索,如特殊符號和一些無意義的副詞等)、同義詞(如肯德基同義KFC等)、詞權(quán)重(對一些不重要的詞做RANK,擴(kuò)大召回并提升搜索效果)、拼寫糾錯(如百毒糾錯成百度等)。您可以視具體的查詢情況來配置上述功能,目前提供的還是系統(tǒng)自帶詞表,后續(xù)會開放用戶自定義,一些較特殊的場景(如景點(diǎn)名、影視名等)可以自己配置適合的改寫內(nèi)容。配置完畢后,可以通過API指定qp參數(shù)名字來測試(同上述排序表達(dá)式測試流程類似),觀察改寫效果,測試通過后,添

16、加至上線,即可以對線上查詢立即生效,非常方便。2.3.4 下拉提示下拉提示目前支持多個字段(最多3個)的語義單元抽取,目前抽取邏輯非常復(fù)雜,如果您發(fā)現(xiàn)有符合預(yù)期的情況,可以與我們反饋,我們會視情況來不斷調(diào)整優(yōu)化。目前下拉提示對于抽取出來的語義單元進(jìn)行拼音全拼與前綴等模糊搜索效果,可以很好的達(dá)到減少用戶輸入并規(guī)范用戶輸入提高搜索效果的效果。配置完畢后生效下拉提示,即可查看效果。效果如下:2.4、搜索系統(tǒng)提供了豐富的搜索語法:查詢、過濾、統(tǒng)計、排序、打散等。接下來我們來看下如何調(diào)用OpenSearch API來實(shí)現(xiàn)口碑外賣的效果。2.4.1 初始列表頁 用戶剛打開頁面出現(xiàn)的頁面,此時用戶并沒有進(jìn)行

17、搜索,所以需要制定規(guī)則篩選出一批商品展現(xiàn)給用戶,這里篩選策略可以自己指定,比如:用戶購買過的店優(yōu)先;距離近的優(yōu)先;好評度高的優(yōu)先;近期優(yōu)惠力度大的優(yōu)先等等,以達(dá)到吸引用戶點(diǎn)擊的目的。 這里我們按照距離、好評等因素來綜合來排序;美食的用戶量最大,所以這里只展示美食外賣的門店:query=category:美食/查詢類型為美食的門店sort=-RANK/按照搜索相關(guān)性配置進(jìn)行排序kvpairs= u_posx:120.234,u_posy:30.324/通過用戶位置獲取經(jīng)緯度坐標(biāo),并通過kvpairs中的u_posx、u_posy參數(shù)傳遞給formula用來計算用戶與商家的距離值first_for

18、mula:takeout_score/通過門店質(zhì)量分進(jìn)行門店海選second_formula:takeout_score+10*gauss_decay(0,distance(lng,lat,u_posx,u_posy),5)/對海選出來的門店取TOP N個進(jìn)行精細(xì)排序,主要考慮門店質(zhì)量分以及距離 另外,在實(shí)際外賣的場景下,用戶肯定是在當(dāng)前城市中的查找,我們可以考慮通過city來縮小查詢范圍提高效率,上面查詢改寫為:query=city:310010 AND category:美食/查詢類型為美食且城市編號為310010的門店 可以在搜索測試頁面進(jìn)行下初步搜索效果查看:觀察沒問題后,在程序中調(diào)用

19、API接口獲取上述結(jié)果渲染成最終的產(chǎn)品樣式即可。2.4.2 排序功能在上面搜索的基礎(chǔ)上進(jìn)行排序修正:按照銷量排序:sort=-seller_sales按照最早送達(dá)時間排序:sort=-RANKfirst_formula:takeout_score/按照門店質(zhì)量分粗選formula:if(open_time1>time, open_time1+prepare_time, /如果起始時間超過當(dāng)天時間,則說明還未營業(yè),則送達(dá)時間是開始營業(yè)時間+準(zhǔn)備時間 if(open_time1 <=time and open_time2, prepare_time, /如果當(dāng)天時間在營業(yè)范圍內(nèi),則送達(dá)

20、時間即為準(zhǔn)備時間 10000) /如果超過了營業(yè)結(jié)束時間,則無法送達(dá),這里設(shè)置了一個MAX值10000/open_time1中是配送起始時間距離當(dāng)天0點(diǎn)的分鐘數(shù),open_time是配送結(jié)束時間距離當(dāng)天0點(diǎn)的分鐘數(shù)。如營業(yè)時間是9點(diǎn),21點(diǎn),那么open_time1為9*60=540,open_time2為21*60=1260。同理,time是當(dāng)前時間距離當(dāng)天0點(diǎn)的分鐘數(shù),比如當(dāng)前是10點(diǎn),則time為600。如果一天中多個營業(yè)時間段,則類似處理。prepare_time是準(zhǔn)備及配送時間,可以由商家根據(jù)實(shí)際情況提供。按照距離遠(yuǎn)近排序:sort=distance(lng,lat,”120.234

21、”,”30.323”)/120.234、30.323為用戶坐標(biāo)的經(jīng)緯度按照起送價由低到高排序:sort=+starting_fee按照評分由高到低排序:sort=-takeout_score搜索測試頁面效果:2.4.2 美食搜索這里增加的搜索詞,并且從上面效果圖可以看出,結(jié)果展示的時候區(qū)分了店鋪和商品兩項(xiàng),所以查詢的時候需要分開做查詢:query=city:310010 AND category:美食 AND seller_name:外婆家/查詢類型為美食且城市編號為310010的門店query=city:310010 AND category:美食 AND title:外婆家/查詢類型為美食

22、且城市編號為310010的菜品filter=in_polygon(delivery_area,120.3452,30.32124)/需要在配送范圍之內(nèi)的,其中(120.3452,30.32124)為用戶坐標(biāo)kvpairs= u_posx:120.234,u_posy:30.324/通過用戶位置獲取經(jīng)緯度坐標(biāo),并通過kvpairs中的u_posx、u_posy參數(shù)傳遞給formula用來計算用戶與商家的距離值sort=-RANKfirst_formula: static_bm25()*3+takeout_scoresecond_formula: 5*text_relevance(title)+1

23、0*gauss_decay(0,distance(lng,lat,u_posx,u_posy),5)+if(open_time0<=kvpairs_value(time,INT) and kvpairs_value(time,INT) < open_time1,3,0)+takeout_score/設(shè)計初衷見排序表達(dá)式部分的介紹,這里就不額外贅述了。搜索測試頁面效果如下:2.4.3 鮮花列表頁實(shí)現(xiàn)方式與美食類似,只不過修改下查詢query即可,這里不再重復(fù)介紹。query=city:'310010' AND category:'鮮花'2.4.4 搜索小結(jié)調(diào)試過程中會遇到一些報錯請,請根據(jù)錯誤碼查找文檔找到錯誤原因進(jìn)行修改即可。測試過程需要根據(jù)實(shí)際情況對排序表達(dá)式、應(yīng)用結(jié)構(gòu)不斷進(jìn)行調(diào)整,以便達(dá)到滿意的效果。另外,在使用中有很

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論