小弟是網路公司的PM,負責一個跟景點圖資有關的產品,目前服務內有個進50萬的POI資
料庫,但是讓用戶搜尋時,跑出來的結果非常糟糕,而且負責此項目的同事說能優化的都
做了,已經無法再調整。想問問看版上的大神能不能開示怎麼處理比較好
被檢索的欄位
poiNameCN:晴空塔
poiNameEN:Tokyo Skytree
nickname1:天空樹
nickname2:新東京鐵塔
adminDivisionCN:日本/東京都/東京都心/墨田區
adminDivisionEN:Japan/Tokyo/Special wards/Sumida
原本理想的情況是,不管用戶是輸入景點的中文或英文名稱、或是輸入別名,或是輸入名
稱加上行政區劃內的某一層(例如輸入:東京 天空樹),都可以用這些欄位來找出關連,
可是實測之後的結果卻很糟
想問問有沒有大神有這種讓elsatic search同時比同一個物件的多個欄位,再排關聯度的
經驗,能給小PM一點建議,讓我可以再去爭取重開這個優化的需求
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.105.193 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1705312027.A.A80.html→ srwhite1樓50萬筆聽起來沒有很大(? 你們是用like去查嗎 01/15 17:55
kewang2樓是同行嗎 xd 裡面我有寫一https://techblog.funliday.com 01/15 18:06
→ kewang3樓些可以參考,但都是舊版的方式了,有空再寫新版的方式 01/15 18:06
B09886980884樓怎麼個糟法?連舉例都不會不要當pm害人好嗎 另外官 01/15 18:23
→ B09886980885樓方不是有sup嗎?官方對於這case給的回應是什麼 01/15 18:23
Sunal6樓發現k旺? 01/15 18:25
→ Lordaeron7樓我認為B0988698088 應該有SOLUTION的,出一篇吧。 01/15 18:26
alihue8樓你要先釐清是 recall 還是 ranking 問題。換句話說是搜尋 01/15 18:31
→ alihue9樓結果沒有命中還是單純排序太後面。此外對 input 拆詞後是 01/15 18:31
→ alihue10樓採用什麼樣語法搜尋,以及需要檢查拆詞後的結果符不符合 01/15 18:31
→ alihue11樓預期。然後同義詞機制要重新設計,通常是在 query time 01/15 18:31
→ alihue12樓先展開比較單純好維護。然後地點看你是想要真的依照經緯 01/15 18:31
→ alihue13樓度找還是單純用關鍵字,演算法差很多 01/15 18:31
→ johnny914414樓如果是你這需求,從 schema design 就錯了,不如說 01/15 18:34
→ johnny914415樓說你們做了什麼優化好了XD 01/15 18:34
→ alihue16樓排關聯度就單純很多,同常就命中的詞 + BM25 + 設欄位權 01/15 18:35
→ alihue17樓重。雖然進階的應該要用使用者 log 去用 ML 做 ranking, 01/15 18:35
→ alihue18樓不過看起來你們的進度連初階 elasticsearch 功能都還沒正 01/15 18:35
→ alihue19樓確使用,也就是我前面說的你們可能連 recall 都不好 01/15 18:35
→ johnny914420樓其次,你們的需求&量級用到 elasticsearch 感覺有 01/15 18:36
→ johnny914421樓點殺雞用牛刀了,可以試試 Meilisearch 這種小型的 01/15 18:36
→ johnny914422樓,你們應該會快樂很多,也不用懂那麼多 01/15 18:36
→ alihue23樓其實你可以善用 chatGPT 應該可以有簡單的理解。也可以嘗 01/15 18:37
→ alihue24樓試自己架 elasticsearch,應該還不需要寫到 code,除了匯 01/15 18:37
→ alihue25樓大量資料以外 01/15 18:37
→ layer093026樓這是pm責任嗎? 01/15 19:00
johnbill27樓連問題都說不清楚 這PM 01/15 19:07
pvq21228樓看你說明是想要用天空樹也搜尋到晴空塔之類的,那就是同義 01/15 19:37
→ pvq21229樓詞 01/15 19:37
→ pvq21230樓然後再來針對搜尋的關鍵字去做中文、英文分詞,資料入庫時 01/15 19:37