搜索系统1:为什么要做搜索系统
任何一个电商平台都有一个搜索系统。为什么?东西多,用户找起来太麻烦。那么这个问题用其它的方法能否解决呢?答案是看数据量与服务器配置。
传统的解决方法,对于用户输入的词"word",select * from product where name like '%word%',这就搞定了。不过数据量大了,得上小型机。
现在一般用的搜索系统都是基于lucene,因为这倒排索引结构比上面的数据库查询快得多。对于中文还有好几种中文分词可以用。这里解释一下中文分词。大家都知道英文句子中的词之间都是用空格分开的,但中文不是。那么一句中文话怎么分就是个问题,比如"中华人民共和国",难底是拆成两个词还是三个词?这就是中文分词要解决的问题。
再回到lucene这个工具的话题,如果我们直接用lucene就可以做一个搜索系统了,也可以结合中文分词。入门代码可以看我的一篇文章http://www.highersoft.net/html/notice/notice_274.html 。从代码里可以看出lucene只有一些jar包,如果要干什么事都需要写代码,这工作效率太低了。于是有人就封装了一些接口来做这些事,封装的常用系统有solr或elastic search。
关于solr,现在最新是solr cloud,但这个控制台(页面)有些不太好用,有时会重复请求。关于elastic search,我不太熟,不过这个确实很轻量,级最新版才32m。几乎不用安装,下载后解压直接运行就能访问http://localhost:9200 。但安装插件不方便,主要是版本太乱了。如安装控制台elasticsearch-head,方法太多了,在了解了git,nodejs,npm,python后还是没有这东东安装好。最后用了一个简单方法安装chrome插件。
通过chrome安装插件的方式提供一个可操作es的图形化界面。
1.下载elastic search:
https://www.elastic.co/cn/downloads/elasticsearch解压,进入bin目录,执行elasticsearch(不同系统不一样,不再赘述)
2、安装chrome插件
谷歌浏览器访问https://chrome.google.com/webstore/search/elasticsearch%20head?hl=zh-CN
安装好插件后,就可以点击查看。