强烈推荐一门SQL之外我还在修炼的技艺


平日里大家搜索资料的时候,少不了和搜索引擎打交道。


类似下面从 Google 学术搜索找相关资料的场景,大家肯定没少做。比如输入 data warehousing 查询最新的学术报告,研究进展或者经典书籍。运气好的时候,几乎可以不必买下整本价格不菲的英文原版书,而找到自己想要的那部分内容。


640?wx_fmt=gif



还有一个“偷书”的绝佳地方,便是亚马逊的电子书。只要输入 data warehousing, 书中的部分含有 data 或者 warehousing, data warehouse, data warehousing 的相关篇章都能找到。



640?wx_fmt=gif



作为程序员的我们(谁说 SQL 人不会写程序呢?),自然就会想,如果我把所有的项目文件,脚本,或者自己的文字也像上面一样,提供关键字搜索就好了。既然有想法,就实现呗。


大家对正则(regular expression)肯定不陌生,用 c#/java/python, 甚至 VB 套一个壳儿,就能实现类似下面的文件全文关键字搜索了。


640?wx_fmt=gif


那么,问题又来了,如果我想把我的脚本,文章都给大伙分享,只要大家输入关键字,就可以找到对应的文章,是不是很有用呢?


实际上,就是完成 google 学术搜索,亚马逊电子书搜索的功能。但因为可能是好几百人,甚至是上千人会同时来搜,那么类似第三种实时搜索方案就会有性能问题,一来占用大量的磁盘 I/O, 二来CPU运算也会出现瓶颈。


解决这类需求,最好的方式就是将所有可能的关键字组合存储下来,等有类似关键字搜索的时候,直接命中该关键字对应的文件地址,反馈给用户即可。


有的同学会说,用 SQL 数据库的 Like 啊。嗯,没错。那确实可以达到效果.


比如我要找到文章中含有 Python 关键字的所有书籍,可以这么写:



 
Like '%Python%'


再比如,要找文章中同时含有 Python 和 SQL 关键字的所有书籍:



 
Like '%Python%SQL%'


当然,如果要找文章中含有 Python 或 SQL 的所有书籍:



 
Like '%Python%' Or Like '%SQL%'


如果只写到这里,我估计会被大家狠狠的鄙视一下,这不是SQL初学者才写的嘛!再怎么也要提下 SQL 的全文搜索命令:



 
Contains(Article,"Python" Or "SQL")

(这是 SQL Server 的语法)



但我今天要推荐的是一套开源软件,ElasticSearch, 免费,高速,好用!



下面就开始我们的 ElasticSearch 之旅,第一步极简安装



640?wx_fmt=gif



第二步,开源客户端,配套惊艳的 Data Visualization



640?wx_fmt=gif


典型的应用就是日志的监控。如果日志放到数据库,查询受到各类搜索需求的制约,造成性能缓慢(如上面的 Like 例子),而 elasticSearch 独有的反向索引,则可以完美解决这个缺点。


还有个特别的功能,高亮显示。当我们要知道某类用户的学习倾向时,比如有多少朋友在搜索 Machine Learning, 通过搜索“用户搜索记录”即可查之。ElasticSearch 为我们在词语级别做好了拆分,比如用户的某次搜索是这样的“我要学习 Machine Learning”, ElasticSearch 的分词器会帮我们将这句拆分成“我,学习,Machine Learning”, 将含有 “我”,“学习”,“Machine Learning”的搜索记录对应起来,存到索引中。当我们在分析用户搜索行为时,分析“Machine Learning”就可以查到对应的用户搜索记录了,并且高亮显示。


640?wx_fmt=png



第三步,巧妇难为无米之炊,导数据


如何将大量的日志或者文字类数据,导入 elasticsearch 为我们全文检索使用?Logstash 来帮你,甚至你还可以利用它导入 SQL 数据库的内容。简而言之,他就是一个轻量版的 ETL 工具。



640?wx_fmt=gif



不用花费任何多余的软件费用,即可享用全文检索功能,相信你的老板一定会喜欢你推荐的这套 ElasticSearch. 



640


猜你喜欢:


关于作者

本号精华合集


添加个人微信 dbLenis, 诚邀你加入我们的技术讨论群。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值