作者DOC (鍛鍊的還不夠)
看板Soft_Job
標題[請益] Elastic Search結果慘烈怎麼修
時間Mon Jan 15 17:47:05 2024
小弟是網路公司的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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1705312027.A.A80.html
1F:→ srwhite: 50萬筆聽起來沒有很大(? 你們是用like去查嗎 01/15 17:55
3F:→ kewang: 些可以參考,但都是舊版的方式了,有空再寫新版的方式 01/15 18:06
4F:噓 B0988698088: 怎麼個糟法?連舉例都不會不要當pm害人好嗎 另外官 01/15 18:23
5F:→ B0988698088: 方不是有sup嗎?官方對於這case給的回應是什麼 01/15 18:23
6F:推 Sunal: 發現k旺? 01/15 18:25
7F:→ Lordaeron: 我認為B0988698088 應該有SOLUTION的,出一篇吧。 01/15 18:26
8F:推 alihue: 你要先釐清是 recall 還是 ranking 問題。換句話說是搜尋 01/15 18:31
9F:→ alihue: 結果沒有命中還是單純排序太後面。此外對 input 拆詞後是 01/15 18:31
10F:→ alihue: 採用什麼樣語法搜尋,以及需要檢查拆詞後的結果符不符合 01/15 18:31
11F:→ alihue: 預期。然後同義詞機制要重新設計,通常是在 query time 01/15 18:31
12F:→ alihue: 先展開比較單純好維護。然後地點看你是想要真的依照經緯 01/15 18:31
13F:→ alihue: 度找還是單純用關鍵字,演算法差很多 01/15 18:31
14F:→ johnny9144: 如果是你這需求,從 schema design 就錯了,不如說 01/15 18:34
15F:→ johnny9144: 說你們做了什麼優化好了XD 01/15 18:34
16F:→ alihue: 排關聯度就單純很多,同常就命中的詞 + BM25 + 設欄位權 01/15 18:35
17F:→ alihue: 重。雖然進階的應該要用使用者 log 去用 ML 做 ranking, 01/15 18:35
18F:→ alihue: 不過看起來你們的進度連初階 elasticsearch 功能都還沒正 01/15 18:35
19F:→ alihue: 確使用,也就是我前面說的你們可能連 recall 都不好 01/15 18:35
20F:→ johnny9144: 其次,你們的需求&量級用到 elasticsearch 感覺有 01/15 18:36
21F:→ johnny9144: 點殺雞用牛刀了,可以試試 Meilisearch 這種小型的 01/15 18:36
22F:→ johnny9144: ,你們應該會快樂很多,也不用懂那麼多 01/15 18:36
23F:→ alihue: 其實你可以善用 chatGPT 應該可以有簡單的理解。也可以嘗 01/15 18:37
24F:→ alihue: 試自己架 elasticsearch,應該還不需要寫到 code,除了匯 01/15 18:37
25F:→ alihue: 大量資料以外 01/15 18:37
26F:→ layer0930: 這是pm責任嗎? 01/15 19:00
27F:噓 johnbill: 連問題都說不清楚 這PM 01/15 19:07
28F:推 pvq212: 看你說明是想要用天空樹也搜尋到晴空塔之類的,那就是同義 01/15 19:37
29F:→ pvq212: 詞 01/15 19:37
30F:→ pvq212: 然後再來針對搜尋的關鍵字去做中文、英文分詞,資料入庫時 01/15 19:37
31F:→ pvq212: 就會去做索引,再加上個英文大小寫或是簡繁的 filter,後 01/15 19:37
32F:→ pvq212: 面再記錄一下搜尋熱門關鍵字,去維護 dict 或是 synonym 01/15 19:37
33F:推 qazwsx12: 這問題有說不好嗎?好奇 01/15 21:00
34F:→ ku399999: 感覺也沒到不好 就不足以判斷問題在哪裡吧 01/15 21:26
35F:推 internetms52: 用json dsl組full text search理論上會得到你要的 01/15 22:04
36F:→ internetms52: 東西才對,如果還是不行,那就是分詞問題,比較不好 01/15 22:04
37F:→ internetms52: 處理喔 01/15 22:04
38F:→ layer0930: 他問題不是同義詞,而是搜尋的結果差強人意 01/15 23:46
39F:→ layer0930: 這東西很主觀 01/15 23:46
40F:→ layer0930: 這不太適合新手寫.. 01/15 23:48
41F:推 guanting886: 你家工程師該煩惱的事丟給你在煩惱快跑ㄅ 01/16 06:17
42F:→ jigfopsda: 先定義一個分數來表示「糟糕程度」再來根據分數做調整 01/16 08:08
43F:→ jigfopsda: 這個分數要跟你們商業上的需求一致 01/16 08:08
44F:推 DrTech: 這發文,大概連怎樣評價搜尋引擎的指標都不懂吧,只靠感覺 01/16 08:10
45F:→ DrTech: 。做PM啊,先去了解一下怎麼樣量化自己產品的品質水準。1. 01/16 08:10
46F:→ DrTech: 先學搜尋引擎常見評價指標。2. 根據自己產品,選擇適合的 01/16 08:10
47F:→ DrTech: 指標(別硬抄網路上的)3. 設計一個上線前,必需測過的多個 01/16 08:11
48F:→ DrTech: 測試案例。評價測試案例得到的分數。4.針對沒過的案例,再 01/16 08:11
49F:→ DrTech: 來與技術人員討論,這個案例怎麼改善。沒這流程,只會造成 01/16 08:11
50F:→ DrTech: 搜尋引擎改了A,卻產生新的Bug或副作用而已。 01/16 08:11
51F:→ DrTech: 不要靠"感覺"或"單一case"來決定好壞。硬是解決了一個case 01/16 08:13
52F:→ DrTech: ,只常會造成其他case變差。 01/16 08:13
53F:推 jigfopsda: 推樓上,做任何事情前最重要的就是先把 metric 訂好 01/16 09:01
54F:噓 ZakuSIN: 實作結果與需求不符,怎不直接打回去重弄就好了? 01/16 10:07
55F:→ ZakuSIN: 能優化的都做了 => 結果很爛 = 沒做 01/16 10:07
56F:推 sw12: ....我覺得語氣沒不好。大家壓力好大... 01/16 11:12
57F:推 DarkIllusion: 遇到鳥PM大家火氣都很大 01/16 11:39
58F:推 untitled: 先確認一下,是 ElasticSearch 7 還是 8 呢? 01/16 12:41
59F:推 ns1234: expalin看看分數吧,搞不好你們有動到排序他會完全不吃scor 01/16 18:56
60F:→ peter98: ES...好久沒聽到這個詞了 都是說OS惹拔 01/16 23:50
61F:推 bitcch: 好奇你的糟是指搜尋速度慢 還是達不到想要的效果 01/17 22:16
62F:噓 darkMood: 嘻嘻,終於有讀書人的問題了,不是碼工的問題了。 01/17 22:36
63F:噓 FXW11314: 噓射後不理 01/18 21:15
64F:噓 ashlikewing: 連mapping都沒放上來也想問ES問題喔 01/19 00:21