对中文进行全文检索时一般需要分词,而ElasticSearch内置的中文分词器并不能起到较好的效果。虽然也有一些优秀的中文分词插件比如:ik、HanLP、……但中文分词似乎又是一个新的领域与ES没有太大的关系,因为觉得这些分词插件都是基于统计原理来分词,而现在NLP领域又出了很多基于神经网络(深度学习)的方法进行分词。
此外,在搜索排序上,ES又是基于BM25这样的算法,尽管有 elasticsearch 对 learning to rank的支持,但是不知道真正应用到实际的又有多少?总感觉那些高大上的深度学习算法更适合做文本的搜索和推荐。
所以就很疑惑,ElasticSearch在搜索系统里面究竟扮演一个什么样的角色?因为有时候看到一些与搜索相关的招聘岗位,并不要求ElasticSearch,反而是要求机器学习、自然语言处理、深度学习相关的算法经验。
小弟刚接触ElasticSearch不到一年,不太懂,求各位解答,谢谢啦。
此外,在搜索排序上,ES又是基于BM25这样的算法,尽管有 elasticsearch 对 learning to rank的支持,但是不知道真正应用到实际的又有多少?总感觉那些高大上的深度学习算法更适合做文本的搜索和推荐。
所以就很疑惑,ElasticSearch在搜索系统里面究竟扮演一个什么样的角色?因为有时候看到一些与搜索相关的招聘岗位,并不要求ElasticSearch,反而是要求机器学习、自然语言处理、深度学习相关的算法经验。
小弟刚接触ElasticSearch不到一年,不太懂,求各位解答,谢谢啦。
1 个回复
rochy - rochy_he
赞同来自: hapjin
1. 分词:目前大多数的搜索还是基于规则和基于词典的分词,这种模式不仅能达到很高的分词速度,而且对于新词只需要及时更新词库即可;不过也有基于模型的分词,这种对于未登录词识别效果好一些,但是不稳定;不稳定主要体现在模型参数的调整可能会造成同样一句话得到不同的分词结果;所以虽然基于词典比较 Low,却是十分实用的;
2. 排序:对于简单的搜索应用而言,ES 的评分模型加上 script_score 即可构建出符合自己业务系统的排名,加上白名单机制可以实现竞价排名等规则;不过如果想持续优化搜索结果就需要 learning to rank 了。
3. ES 只是搜索系统的一个工具,所以在大数据等招聘里面,谈到 ES 的还是比较多的。
推荐你看一下这个视频:https://www.itdks.com/Course/detail?id=15561