构建搜索引擎常用的方式目前主要有两种:一是solr,一是ES。我这里推荐solr,如果你还要加上大数据的一些特性,建议使用ES。
Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。随着 Google 和类似的复杂搜索引擎的出现,用户希望得到高质量的搜索结果,帮助他们快速、轻易地找到所需的信息。
BOSS对旗下的在线购物站点抱有很高的期望,要求它能够提供一个可伸缩、高度可用且易于维护的搜索解决方案,并且安装这个解决方案不应太昂贵。对于牛B如我的技术宅而言,只是希望事业进步,让老板和客户满意,以及保持头脑清醒。
使用 Apache Solr 可以满足这些要求,它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。您可以坚持使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr 还拥有一个活跃的开发者群体,如有需要,可以随时向他们寻求帮助。
Solr 的历史
Solr 最初由 CNET Networks 开发,2006 年初,Apache Software Foundation 在 Lucene 顶级项目的支持下得到了 Solr。Solr 于 2007 年 1 月酝酿成熟,在整个项目孵化期间,Solr 稳步地积累各种特性并吸引了一个稳定的用户群体、贡献者和提交人。Solr 现在是 Lucene(Apache 的基于 Java 的全文本搜索引擎库)的一个子项目。
Solr版本更新很快,网上找的教程都是基于老版本,新手入坑要先了解各个版本的差异:
4.x~5.x的变化
4.x的安装方式,会分发成一个war包部署在任何Servlet容器上,这是大家都熟知的方式,在我看来未免繁琐了一点。
或许官方也感觉繁琐了,于是5.x有个最大的改变。现在的Solr是一个(Standalone)独立的服务器,怎么个Standalone法呢?
从solr5.0开始,Solr不再分发成一个war包以部署在任何Servlet容器上。现在的Solr作为一个单独的Java应用服务器分发,包括在Unix或者Windows平台上使用的启动和停止脚本,以及一个安装脚本来设置生产环境下的Solr安装,在*nix平台上通过/etc/init.d来管理。【*nix----Unix】
在内部,Solr仍然通过Servlet API实现,并由Jetty提供支持--但是这仅仅是实现细节的一个例子。作为一个“webapp”部署在其它Servlet容器(或者其它Jetty的实例)是不支持的,同时当有额外的变化时可能会在内部对Solr进行调整以利用自定义网络堆栈功能导致在未来5.x版本中不工作。
以后新版本就不需要转移到Tomcat上了,或许大家不死心,但是目前的新版本都是不推荐的,即使你转移成功了,后面也可能麻烦不断,你再精通,你能比得上官方吗?老弟啊,没毛病,是时候放手了。
5.x 6.x 7.x 的安装
都是差不多一样的流程。
去官网下载需要的安装包(zip,tgz)
解压
启动 bin/solr start
访问 http://localhost:8983/solr/
5.x 6.x 7.x 的目录结构
bin目录:
solr and solr.cmd,一个是Unix一个是windows的控制脚本。
solr.in.sh and solr.in.cmd,一个是Unix,一个是windows的属性文件,此处配置Java,Jetty和Solr的系统级别属性。当使用bin/solr/时bin/solr.cmd,这些设置可以被覆盖,这允许您在一个地方设置所有的属性。
install_solr_services.sh,此脚本用于Unix系统将Solr作为服务安装。
DIST
该目录包含主要的Solr .jar文件。
Server
Solr管理界面 (server/solr-webapp)
Jetty libraries (server/lib)
日志文件 (server/logs)
日志配置 (server/resources).
configsets示例 (server/solr/configsets)