日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

從提高 Elasticsearch 搜索體驗說開去......

 銘毅天下 2021-12-24

1、實戰(zhàn)問題

球友提問:怎么搜索才能使得結(jié)果是最好的呢?

我這邊一個搜索功能,實現(xiàn)做法就是將用ik分詞器配合multi查詢實現(xiàn)的。

中途也追加了客戶所在領(lǐng)域相關(guān)詞匯字典。

但是客戶一直反饋搜索體驗不好。

如果想要提高搜索體驗還能從那些方面入手呢?

來自:死磕 Elasticsearch 知識星球

這個問題非常有代表性,我在實際產(chǎn)品開發(fā)中也遇到過。

2、從幾個例子說搜索體驗

示例一:“慕X網(wǎng)”輸入“觸發(fā)器”的搜索截圖。

注意:我輸入的是“觸發(fā)器”,返回結(jié)果第一條沒有問題,其他幾條有關(guān):“觸”、“發(fā)”的,可以說和我的搜索沒有關(guān)系。

站在用戶體驗的角度,我認(rèn)為:體驗很差,返回了很多不相關(guān)的數(shù)據(jù)。

示例二:某題庫APP,不支持跳轉(zhuǎn)翻頁。

如下所示,題庫共1703題,包含:判斷題、選擇題。

只支持:點擊:上一題、下一題。

實際場景:

  • 當(dāng)做了100道、200道的時候,只有選擇題;到底多少選擇題?
  • 當(dāng)退出后,需要點擊幾百下進(jìn)入自己上次做到的最后一道題.....

這不是用戶體驗差,這是沒有用戶體驗,開發(fā)者完全沒有動腦子的設(shè)計,用戶會"懷疑人生"。

示例三:電商搜索“秋天第一條秋褲”,該返回什么?

放大查看圖片,亮點自現(xiàn)

這是個見仁見智的問題,究竟返回什么,各個電商公司都有自己的評判。

但,單純站在用戶的角度,高下立判。

銘毅一句話點評:

  • 拼多多

“活該你發(fā)展快”,的確返回結(jié)果就是預(yù)期結(jié)果,且友好的推薦了所在地域的“秋褲”信息。

  • 淘寶

中規(guī)中矩,至少能返回“秋褲”。

  • 京東

沒有找到商品,為你推薦“秋褲”,“干嘛推薦,直接返回不就完了”。

  • 當(dāng)當(dāng)

好家伙!推薦的都是“秋天”的商品。你是用戶,你咋想?

  • “尼瑪,什么玩意?”
  • “五味雜陳”
  • “不知所云”

......

基本上可以得出結(jié)論:公司發(fā)展速度和搜索體驗成正比。

3、有數(shù)據(jù)的地方,就有搜索

信息泛濫和爆炸的今天,搜索無處不在。基本可以形象的概括為:“有數(shù)據(jù)的地方,就有搜索“。

搜索可能是用戶最常用到的功能之一,學(xué)習(xí)、工作、衣食住行等各個環(huán)節(jié)都離不開搜索。

  • 學(xué)習(xí)

輸入關(guān)鍵詞,搜索靠譜的免費或付費網(wǎng)絡(luò)資源。

  • 工作

遇到錯誤碼,通過Google 搜索獲得答案。

搜索微信聊天記錄,看看之前都聊的某個關(guān)鍵有價值信息。

網(wǎng)上購買衣服,實際就是搜索、選擇的過程。

日常中午訂外賣,選擇外賣的過程,就是搜索的過程,離公司近+評價高=下單幾率大。

出差訂酒店,搜一下,對比選擇個性價比高的。

十一自駕游,出行前高德導(dǎo)航,輸入目的地搜索結(jié)果,根據(jù)返回結(jié)果,選擇合適路線。

正如:搜索體驗的分析文章指出:“搜索框的設(shè)計及其可用性問題其實是一個不容忽視的要點。

一個好的搜索體驗也許并不能讓用戶對你的產(chǎn)品產(chǎn)生特別的好感,但是一個不好的搜索體驗卻能給你的產(chǎn)品帶來致命的打擊。

所以無論是為了給用戶提供更好的服務(wù),還是避免用戶產(chǎn)生消極的體驗感受,做好搜索的體驗對一個內(nèi)容型產(chǎn)品來說都是至關(guān)重要的。“

判定搜索體驗好不好,搜索結(jié)果滿足用戶需求已是最低門檻要求,以下內(nèi)容都是能帶來良好搜索體驗的考察點、用戶關(guān)注點:

  • 搜索框:

1)在視覺上突出搜索框、搜索框與放大鏡icon配合使用;

2)將搜索框置于用戶預(yù)期的位置;

3)提供搜索按鈕;

4)合適的尺寸

毫不客氣的說:“在導(dǎo)航欄最顯眼位置放置搜索框是對用戶最起碼的尊重”!

  • 可搜索內(nèi)容提示:告訴用戶他們可以搜索哪些內(nèi)容

  • 每個頁面都要有搜索框

  • 使用智能推薦/匹配機(jī)制

智能推薦或匹配可以節(jié)省用戶的輸入成本。

普通用戶不太善于組織搜索語言:在這種情況下如果他們沒有在第一步就表達(dá)清楚問題,那么接下來也很難成功找到合適的搜索結(jié)果。

當(dāng)智能匹配發(fā)揮作用后,它就能幫助用戶表達(dá)清楚搜索的問題,進(jìn)而找到滿意的答案。

一句話,好的搜索體驗就是好的用戶體驗,而好的用戶體驗自然和用戶留存、甚至公司發(fā)展掛鉤。

4、用戶搜索的五個核心環(huán)節(jié)拆解

“搜索就像是用戶與 App 或者網(wǎng)站之間的對話,用戶通過提問表達(dá)信息需求,App 或者網(wǎng)站通過展示結(jié)果來作為回應(yīng)。

用戶期待流暢的搜索體驗,并且基于搜索結(jié)果的質(zhì)量用戶通常會對一個 App 的價值形成一個快速的判斷?!?/p>

在搜索的過程中,用戶的經(jīng)歷大致可以分為五個部分,分別是:發(fā)現(xiàn)搜索、輸入關(guān)鍵詞、等待結(jié)果、查看結(jié)果、完成搜索,每個步驟的體驗都是整體體驗的一部分,將對用戶最終對搜索體驗產(chǎn)生影響。

4.1 發(fā)現(xiàn)搜索

如前所述,搜索框要醒目,搜索欄甚至?xí)毩⒂陬^部并且會在UI界面中占據(jù)視覺焦點的位置,用戶很容易就能找到。

4.2 輸入關(guān)鍵詞

  • 要能提示用戶,輸入什么關(guān)鍵詞。
  • 能根據(jù)用戶輸入的某幾個關(guān)鍵,給出“搜索提示”,如前谷歌搜索截圖。
  • 復(fù)雜組合搜索,類似谷歌【高級搜索】,要有輔助控件,篩選日期、排除關(guān)鍵詞設(shè)置、排序方式、與或非表達(dá)式等。

4.3 等待結(jié)果

  • 響應(yīng)要快,用戶的忍耐是有限度的,超過3秒不返回,估計用戶就流失了。
  • 如果的確響應(yīng)慢,可以有響應(yīng)動畫或者提示信息友好提示。
  • 能識別用戶輸入,必要結(jié)果用戶歷史搜索習(xí)慣,整合后返回最優(yōu)TOP N結(jié)果。

4.4 查看結(jié)果

  • 用戶根據(jù)搜索返回,篩選的過程。
  • 如果沒有結(jié)果,建議不要直接返回“0”條結(jié)果,可以有其他推薦信息,比如:提示用戶換關(guān)鍵詞等。

4.5 完成搜索

  • 有滿足需求結(jié)果,搜索結(jié)束。
  • 沒有滿足用戶的結(jié)果,用戶會換關(guān)鍵詞繼續(xù)搜,或者用戶流失去別的APP或者網(wǎng)站了。

若要完善用戶體驗,這幾個步驟缺一不可、都得下功夫。

5、Elasticsearch 搜索的底層邏輯

明白下面兩個過程,就能很好的理解 Elasticsearch 搜索。

以下僅針對:text的全文檢索的文本類型。

5.1 寫入索引化過程

  • 文檔寫入 Elasticsearch 不是直接寫入,而是根據(jù)你Mapping定義的分詞器(默認(rèn):standard)分詞,構(gòu)建倒排索引后寫入。

  • 分詞器的選型,決定分詞的粒度,分詞的粒度決定后續(xù)的檢索指標(biāo)是否能達(dá)標(biāo)。

5.2 數(shù)據(jù)檢索過程

  • 檢索環(huán)節(jié),不是輸入什么就檢索什么,而是不同的檢索語句,會有不同的檢索機(jī)制。
  • 檢索環(huán)節(jié),選擇什么檢索類型,結(jié)果也會完全不一致。

比如:“match”細(xì)粒度檢索和“match_phrase”粗粒度短語匹配,將是截然不同的搜索結(jié)果。

match:會首先把你輸入的關(guān)鍵詞進(jìn)行切分后再檢索。

match_phrase:會把你輸入的詞當(dāng)做短語進(jìn)行檢索。

6、Elasticsearch 搜索體驗可量化的指標(biāo)

用戶體驗是感官反應(yīng),但感覺的搜索結(jié)果需要量化下。

如何量化?實際本質(zhì)指標(biāo)就是:查準(zhǔn)率(精確率)、查全率(召回率)。

6.1 召回率

定義:本次搜索結(jié)果中包含的相關(guān)文檔占整個集合中所有相關(guān)文檔的比率。

衡量檢索結(jié)果的查全率。

6.2 精確率

定義:本次搜索結(jié)果中相關(guān)文檔所占的比例。

衡量檢索結(jié)果的查準(zhǔn)率。

具體可以根據(jù)混淆矩陣來理解,


相關(guān)不相關(guān)
返回真正例(tp)偽正例(fp)
未返回偽反例(fn)真反例(tn)

已知上述矩陣,那么準(zhǔn)確率和召回率可以按如下方法計算:

召回率:= tp / (tp + fn) * 100%;

精確率:= tp / (tp + fp) * 100%

如果還不好理解,知乎上通俗解釋:

  • 召回率:正樣本有多少被召回了(召回了多少)。

  • 精確率:你認(rèn)為的正樣本,有多少猜對了(猜的準(zhǔn)確性如何)。

7 、如何改進(jìn) Elasticsearch 搜索體驗

前面也提到了,搜索五環(huán)節(jié)環(huán)環(huán)相扣。搜索體驗是:設(shè)計、前端、后端、決策層、管理層都要考慮的事情,不能簡單的理解為是技術(shù)問題。

本文僅對 Elasticsearch 后端技術(shù)實現(xiàn)層面做下解讀:

7.1 根據(jù)業(yè)務(wù)場景選擇合適的分詞器

注意,沒有最好的分詞器、沒有適合所有業(yè)務(wù)場景的通用分詞器,需要結(jié)合業(yè)務(wù)場景擇優(yōu)選擇。

  • 如果要求細(xì)粒度,只要存在就要召回,那 ngram 分詞適合或者 7.9+ 新推出的 wildcard 數(shù)據(jù)類型優(yōu)先考慮。

  • 需要提前做下切詞對比,以驗證不同分詞器是否滿足業(yè)務(wù)。中文選擇:IK、結(jié)巴、ansj或者其他。

切詞對比核心 API :analyzer 要活學(xué)活用。

POST _analyze
{
  "text":"提供全球卓越的云計算服務(wù)_助力企業(yè)無憂上云",
  "analyzer""ik_smart"
}
  • 選型 IK,要區(qū)分:ik_smar 與 ik_max_word。

ik_smart是粗粒度的分詞(返回盡可能少,逼近貼合人工分詞);

ik_max_word是細(xì)粒度的分詞(返回盡可能多)。

7.2 注意詞典的選擇與更新

“巧婦難為無米之炊“,“巧婦“是分詞器,詞典是“米”。

分詞器再牛逼,沒有靠譜的詞典也是徒勞。

所以,詞典選擇的好,分詞才會越準(zhǔn)確。

建議:在基礎(chǔ)詞庫相對全的前提下,需要結(jié)合業(yè)務(wù)場景添加屬于自己的行業(yè)詞庫、領(lǐng)域詞庫等。

即便添加了行業(yè)、領(lǐng)域詞典,也涵蓋不全新詞怎么辦?

比如:新的網(wǎng)絡(luò)詞匯、行業(yè)領(lǐng)域詞匯不能面面俱到導(dǎo)致分詞不正確,用戶體驗差怎么辦?

由于分詞器作為插件,原始詞典一旦配置,是不支持動態(tài)更新的,需要借助第三方機(jī)制實現(xiàn)。

比如:IK 詞典的動態(tài)更新實現(xiàn)機(jī)制:結(jié)合修改 IK 分詞器源碼 + 動態(tài)更新 mysql 詞條達(dá)到更新詞典的目的。

7.3 重視 Mapping 環(huán)節(jié)數(shù)據(jù)建模

  • text 類型的 fielddata是內(nèi)存耗費大戶,除非必須,不建議開啟。

  • 根據(jù)是否需要排序或者聚合決定是否啟用 keyword 類型。

  • 不需要索引的字段,“index”設(shè)置為“false”。

  • 不需要存儲的字段,“store”設(shè)置為“false”。

  • 大文本如 word,pdf 文本信息,考慮切分成小的片段后存儲。

7.4 根據(jù)業(yè)務(wù)場景,選擇合適的搜索類型

如前所述:match 和 match_phrase 適用場景不同、高下立判。

  • match應(yīng)對的是:查全率高,召回率高但準(zhǔn)確率低。

  • match_phrase則是:短語匹配,查準(zhǔn)率高、召回率低。

  • wildcard 模糊匹配,除非必須,不建議使用。

當(dāng)然,還有其他檢索類型,如:query_string, fuzzy等,需要結(jié)合業(yè)務(wù)場景做出選擇。

7.5 追求極致響應(yīng)速度,要做取舍權(quán)衡

用戶的忍耐時間非常有限, 不要讓用戶等。

  • 加大數(shù)據(jù)節(jié)點的內(nèi)存和堆內(nèi)存的配比
  • _source 字段非必要不返回
  • 不在檢索返回階段做復(fù)雜的業(yè)務(wù)處理

包含但不限于:

1)二重以上聚合

2)wildcard 或者 regex 正則檢索

3)自定義高亮

  • 高亮實現(xiàn)根據(jù)業(yè)務(wù)類型做好選型

注意:當(dāng)文件>1MB(大文件)時候,尤其適合 fvh 高亮方式。

  • 做好業(yè)務(wù)取舍

比如:默認(rèn) from,size 深度分頁10000條夠了,如果產(chǎn)品經(jīng)理不同意,需要討論說服之。

比如:聚合結(jié)果不準(zhǔn)確是 Elasticsearch 默認(rèn)機(jī)制,要接受或者做其他方案選型(比如:clickhouse),不糾結(jié)細(xì)節(jié)。

7.6 使用智能推薦/匹配機(jī)制

  • 簡單的搜索框推薦實現(xiàn) 可以借助:prefix 前綴搜索實現(xiàn)。
GET kibana_sample_data_ecommerce/_search
{
  "_source""customer_full_name",
  "query": {
    "prefix": {
      "customer_full_name.keyword""Ed"
    }
  }
}
  • 復(fù)雜點的推薦實現(xiàn),需要輔助糾錯功能的,借助:Suggester實現(xiàn)。
POST /blogs/_search
{
  "suggest": {
    "my-suggestion": {
      "text""lucne rock",
      "term": {
        "suggest_mode""missing",
        "field""body"
      }
    }
  }
}

篇幅原因,關(guān)于 Suggester 解讀,

推薦:wood大叔的文章:

https:///article/142

  • 再復(fù)雜點的,需要用戶行為識別+推薦引擎機(jī)制實現(xiàn)。

一個優(yōu)秀的推薦引擎更趨向于個性化推薦,它可以通過收集用戶有價值的數(shù)字足跡(如:人口統(tǒng)計、事務(wù)細(xì)節(jié)、交互日志、購買記錄、交易記錄、瀏覽記錄)和關(guān)于產(chǎn)品的信息(例如:規(guī)格、用戶反饋、與其他產(chǎn)品比較等),來完成推薦之前的數(shù)據(jù)分析。

8、小結(jié)

搜索體驗決定用戶體驗,用戶體驗決定的產(chǎn)品的用戶率進(jìn)而決定的產(chǎn)品的成敗。

著名產(chǎn)品人梁寧老師在《產(chǎn)品思維30講》提到“我們看到很多新的互聯(lián)網(wǎng)公司,系統(tǒng)能力不如傳統(tǒng)企業(yè),但是可以從傳統(tǒng)企業(yè)那里搶奪大量用戶,靠的就是用戶體驗。在體量差異這么大的情況下,用戶體驗?zāi)艹蔀楹诵母偁幜?;同維度競爭的時候,用戶體驗更是最核心的競爭力”。

搜索是流量入口,是“兵家“(各APP、網(wǎng)站)用戶體驗必爭之地。

搜索體驗的迭代是沒有終點的,研究的多深、做的多仔細(xì)都不為過。

大家有好的思路和建議也歡迎補充交流。

參考:

  • http://www.woshipm.com/ucd/1037490.html
  • https://zhuanlan.zhihu.com/p/60826371
  • https://www.jianshu.com/p/677742838595
  • http://www./article/103633
  • https://www.uisdc.com/search-experience-process-summary
  • http://www./radar/?p=28
  • 《自己動手做推薦引擎》

推薦:

干貨 | Elasticsearch 開發(fā)實戰(zhàn)常用命令清單

干貨 | Elasticsearch開發(fā)人員最佳實戰(zhàn)指南

Elasticsearch 開發(fā)運維實戰(zhàn)核心 Tips

干貨 | 論Elasticsearch數(shù)據(jù)建模的重要性

干貨 | Elasticsearch 索引設(shè)計實戰(zhàn)指南

干貨 | Elasticsearch多表關(guān)聯(lián)設(shè)計指南

短時間快習(xí)得多干貨!

中國40%+Elastic認(rèn)證工程師出自于此!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多