公司网站维护教程,综合网站模板,哈尔滨视频制作公司,广告设计教程文章目录基础语言数据结构与算法工程方面搜索相关搜索主要模块电商搜索流程分词相关搜索召回相似度算法相关词推荐排序相关国美搜索搜索算法工程师需要掌握的技能基础
语言
大部分公司用的是Solr、ElasticSearch#xff0c;都是基于Java实现的#xff0c;因此熟悉掌握Java语…
文章目录基础语言数据结构与算法工程方面搜索相关搜索主要模块电商搜索流程分词相关搜索召回相似度算法相关词推荐排序相关国美搜索搜索算法工程师需要掌握的技能基础
语言
大部分公司用的是Solr、ElasticSearch都是基于Java实现的因此熟悉掌握Java语言并灵活使用很重要360公司他们的分词、搜索引擎都是基于C、C去写因此C、C也很重要但是我工作当中主要用Java其实我也忘了差不多了其实Python也很重要Python提供了很多优秀的库可以解决很多应用场景读写Excel、Word文档如果用Java库去调太麻烦了还有Python提供了很多机器学习库当然我是做工程更多这方面很多也不懂
数据结构与算法
我觉得所有软件的底层都是数据结构掌握数据结构尤其重要例如你用mysql底层用的B树、用Hbase底层也是B树、HashMap底层是红黑树、定时任务底层是优先队列、Lucene底层用FST、跳跃表其实到了汇编指令用栈协助计算等等这些都离不开数据结构当然面试肯定也会被问到去年面国美、京东被问写二叉树等前序遍历代码、两个链表去重最近面试Boss直聘、京东到家被问到BitMap、BitSet、链表、FST、跳跃表基础的算法基础也很重要额反正面试肯定会被问到最近面了网易就被问到如何用DFS构建一个迷宫再用BFS去解迷宫Boss直聘被问到LCS原理时间复杂度去年面滴滴问到二分查找之前去360企业安全实习被问到快速排序
工程方面
应用框架SpringBootRPC框架Dubbo、Thrift缓存SSDB、Redis、Guava Cache、EvCache、Caffeine等数据库Hbase、Mongodb、Mysql搜索相关Lucene、Solr、ElasticSearch实时计算Flink监控相关Cat、Prometheus其他的后续遇到再补充我现在也还是小白上面的很多还没时间去学
搜索相关
搜索主要模块 电商搜索流程 分词相关
分词新词发现词权重计算核心词识别同义词紧密度分析意图识别改写纠错
搜索召回
TFIDFBM25
相似度算法
欧几里得距离曼哈顿距离余弦相似度accard相似度
相关词推荐
Fpgrow你可以理解为统计词的共现次数只是fpgrowth统计起来效率更高 word2vecword2vec是语义层面的相关
排序相关
Learning To Rank(LTR) pointwise 、 pairwise 、 listwis
国美搜索
1.分词基于词典和机器学习相结合的其中机器学习部分用的CFR条件随机场来做的分词 2.搜索分词用的是最大后向匹配用最大后向匹配主要是考虑人的正常输入习惯比如玻璃水杯要是前向最大切分就是玻璃水 杯后向就是玻璃 水杯
索引分词 全切分最小正向切分又叫全切分 分类预测fasttext 分词命名实体识别 型号词库结合的
精排 pointwise就是看成ctr点击率预估来给出每个商品点击的概率值按照概率值的大小对候选的商品排序
pairwise 更关注同一搜索词下面不同商品的是否和搜索词相关样本构造起来比pointwise麻烦
召回bm25 关键词提取tfidf、textrank 意图识别 对query做分类预测预测商品所在分类
搜索算法工程师需要掌握的技能
以下内容摘选自知乎 说说我对搜索算法工程师能力要求的理解。这个能力要求与求职者应聘面试时的能力要求可能不一样。毕竟“面试造火箭入职拧螺丝”是很常见的。 搜索算法的掌握分两个方面一个是掌握的深度另一个是掌握的范围。 深度可以分几个等级
只知道名字或完全没听过大概知道原理并未使用过或调包使用过但具体原理不太清楚没做过优化在实际项目中深度使用过有丰富的调优经验对算法理论有充分的理解可以推导公式等。 搜索算法的范围其实非常广。在整个搜索系统中与算法最强相关的我理解是查询理解/query分析和排序。查询理解 主要是NLU相关的技术包括分词、新词发现、词权重计算、核心词识别、改写、同义词、紧密度分析、意图识别、纠错等。这里面多数都依赖机器学习算法也有少量是依赖词典、规则。召回 从倒排索引中召回相关的网页。包括相关性计算在相关性基础上的粗排序。 相关性计算至少知道tf-idfbm25及各种变种等知道每种算法的优劣。排序 使用机器学习模型对召回结果做精细化的排序Learning To Rank(LTR)。这是搜索系统中最关键的算法几乎决定了最终的排序效果。常见的算法包括LambdaMart, RankNet, LambdaRank等至少知道PointWise, PairWise, ListWise等几种算法的分类。深入使用过其中某几个算法。 在排序中还涉及语义匹配和点击调权等算法使用过DSSM, DBN等常规的算法。 除了上述3个其它的像倒排索引构建、网页搜索中的爬虫、网页分析、摘要计算等也会涉及一些算法。 我个人感受搜索算法工程师是对经验要求特别高的一个岗位。不太像有些搞机器学习的岗位知道几个机器学习模型一直在调优这几个模型来改善效果就行。搜索的效果是由非常多的因素共同影响决定的整个系统比较庞大。 从普通的搜索算法工程师角度一般不太可能对上述所有算法都非常熟悉所以如果能对某一两个模块的算法非常熟悉或者说经验很丰富个人觉得已经不错了。如果是对这些都很熟悉那就是算法的总负责人之类的了。