Re: [请益] Elastic Search结果惨烈怎么修

楼主: kewang (652公共汽车)   2024-01-16 11:16:11
※ 引述《DOC (锻炼的还不够)》之铭言:
: 小弟是网络公司的PM,负责一个跟景点图资有关的产品,目前服务内有个进50万的POI资
: 料库,但是让用户搜寻时,跑出来的结果非常糟糕,而且负责此项目的同事说能优化的都
: 做了,已经无法再调整。想问问看版上的大神能不能开示怎么处理比较好
: 被检索的字段
: poiNameCN:晴空塔
: poiNameEN:Tokyo Skytree
: nickname1:天空树
: nickname2:新东京铁塔
: adminDivisionCN:日本/东京都/东京都心/墨田区
: adminDivisionEN:Japan/Tokyo/Special wards/Sumida
: 原本理想的情况是,不管用户是输入景点的中文或英文名称、或是输入别名,或是输入名
: 称加上行政区划内的某一层(例如输入:东京 天空树),都可以用这些字段来找出关连,
: 可是实测之后的结果却很糟
: 想问问有没有大神有这种让elsatic search同时比同一个物件的多个字段,再排关联度的
: 经验,能给小PM一点建议,让我可以再去争取重开这个优化的需求
: 感谢!
原文的推文大概都有提到了做法,但已经在这块花了不少时间的我,也来分享一下
1. 依照字段做多字段分语系
elasticsearch 每一个字段都可以塞 array 进去,所以你的 nickname 可以分语系直接
塞进去,poiNameCN: ["晴空塔", "天空树", "新东京铁塔"]
2. 分语系记得要用不同的 analyzer
CN 就用 ik, jieba, blahblah 之类的,EN 就用 standard 或用一堆 filter 串起来
无论是哪一种,记得都要用 analyze 测试结果,然后再加 filter 去处理
3. city 可以另外塞 index
因为“东京”、“新宿”也是一个 city,这个必须要能做分词
你现在看起来就是塞在同一个字段 array?如果是塞成 array 的话也应该要正常才对
“猜出正确的 city”其实蛮难的,要先了解你们自己产品的 UX,再来决定如何做
4. 要不要直接串我们家的 API 啊?
不确定是不是你有少列一些东西,但看起来你们家工程师好像连 elasticsearch 的基本
资料储存方式都不太理解,需要补充蛮多知识的。
如果要串我们家 API 的话可以直接私讯我,现在已经改版到第三版了。
要从头到尾做出一套实在是很花时间,要先充分理解使用者行为,然后一步一步演进。
从 POIBank v1 出来到现在已经过 5 年了,去年底已经改版到 v3,当然还是很多问题要
处理,但比 v1 好太多了。
剩下有空再写文章分享更细部的东西好了。
作者: DrTech (竹科管理处网军研发人员)   2024-01-16 12:37:00
good ,难得正常的技术讨论文章
作者: sw12 (专注.幽默)   2024-01-16 14:47:00
坑都挖好了,要跳还是要走舖好的.....
作者: TSMCfabXX (台积新产品)   2024-01-16 16:39:00
技术推
作者: HYDE1986 (足球就是我的呼吸)   2024-01-16 19:31:00
善良推
作者: untitled (Causality)   2024-01-16 21:24:00
提供API务实推
作者: peter98 (新兵)   2024-01-16 23:51:00
支持2 不同语系一定要分开 Data structure也要分开
作者: yfr   2024-01-17 13:52:00
居然是k旺哥
作者: crwu   2024-01-21 01:02:00
他们家开发估计对es不太熟 上面需求es很简单能实现

Links booklink

Contact Us: admin [ a t ] ucptt.com