阿里巴巴程序员在 Elasticsearch 使用前置通配符 差点被开除

原文:https://www.jianshu.com/p/39ecc1bba539

最近在研究Elasticsearch多标签匹配问题,发现了这篇文章,大致看下了表达了一个意思:

搜索关键词时绝对不能使用前置通配符,否则一定会被别有用心的人搜索大段内容导致系统过载崩溃。

其实这个道理普通SQL查询中已经人尽皆知了,就像索引都是由前向后排序,如果前面加入通配符则会导致索引失效。

这位技术老哥可能高估了Elasticsearch的智能和稳定性,其实搜索这东西用逻辑上的原理来想想就知道,有些功能无论再好的系统也是难以实现的,从逻辑上就讲不通。

我看了你的标题和内容

看了下贴的连接。

人家不是说不建议前置通配符吗?

没说不让啊(业务上肯定得前后都需要匹配)

然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符

500
引用
我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符
500 我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符

标题改了下,前置通配符。文章里说的也一样,后置暂且不论,前置通配符搜索非常高耗能,即便单次200字搜索,也能造成严重性能损耗。即便限制了长度,数据量一大时,这种用法也是十分危险的,治标不治本。最根本解决办法是不用前置通配符,业务上的需要使用拆词等方法来替代。

C
引用
500我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符 标题改...
C 标题改了下,前置通配符。文章里说的也一样,后置暂且不论,前置通配符搜索非常高耗能,即便单次200字搜索,也能造成严重性能损耗。即便限制了长度,数据量一大时,这种用法也是十分危险的,治标不治本。最根本解 ...

太难了 现在都是like '%xxx%'

水一下

这是蘑菇街的程序员吧

1