前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Solr介绍及安装

Apache Solr介绍及安装

作者头像
九州暮云
发布2019-08-21 10:27:31
1.1K0
发布2019-08-21 10:27:31
举报
文章被收录于专栏:九州牧云九州牧云九州牧云

Solr是什么

Solr是一个基于Lucene java库的企业级搜索服务器,包含XML/HTTP,JSON API,高亮查询结果,缓存,复制,还有一个WEB管理界面。Solr运行在Servlet容器中,其架构如下:

输入图片说明
输入图片说明

主要功能包括全文检索,高亮命中,分面搜索(faceted search),近实时索引,动态集群,数据库集成,富文本索引,空间搜索;通过提供分布式索引,复制,负载均衡查询,自动故障转移和恢复,集中配置等功能实现高可用,可伸缩和可容错。

Solr和Lucene的本质区别有以下三点:搜索服务器、企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说Solr是Lucene面向企业搜索应用的扩展。

Solr目前有很多用户了,比较著名的用户有 AOL、 Disney、 Apple等,国内的有淘宝,淘宝的终搜就是基于Solr改造的,终搜用于淘宝的SNS、淘女郎等处的搜索。

安装和部署

1. 下载

官方网址:http://lucene.apache.org/solr/

下载地址:http://archive.apache.org/dist/lucene/solr/

2. 安装与配置

以solr-4.4.0为例,解压之后的目录如下:

➜  solr-4.4.0  tree -L 1
.
├── CHANGES.txt
├── contrib
├── dist
├── docs
├── example
├── licenses
├── LICENSE.txt
├── NOTICE.txt
├── README.txt
└── SYSTEM_REQUIREMENTS.txt

5 directories, 5 files

solr提供一个war包可以运行web界面,该文件位于exmaple/webapps目录下,发布该war包之前需要配置solr home,solr home是索引和配置文件所在的目录。

solr home的设置有好几种方式:

(1)、基于环境变量solr.solr.home

直接修改JAVA全局环境变量

export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/tmp/solrhome"

你也可以修改TOMCAT_HOME/bin/catalina.sh,在文件开头添加:

JAVA_OPTS='-Dsolr.solr.home=/tmp/solrhome'

或者,在启动时进行设置。start.jar在源码包中可以找到,内部包含jetty容器。

$ java -Dsolr.solr.home=/tmp/solrhome -jar start.jar

(2)、基于JNDI配置

修改war中的web.xml文件,取消下面对下面的注视,并修改env-entry-value的值。

<env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value>/tmp/solrhome</env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

或者,创建solr.xml文件放于TOMCAT_HOME/conf/Catalina/localhost,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Context docBase="TOMCAT_HOME/webapps/solr.war" debug="0" crossContext="true">
   <Environment name="solr/home" type="java.lang.String" value="/tmp/solrhomehome" override="true"/>
</Context>

(3)、基于当前路径的方式

这种情况需要在example目录下去启动tomcat,Solr查找./solr,因此在启动时候需要切换到example目录下面

3. 在Jetty上运行Solr

在example目录下,运行下面命令即可启动一个内置的jetty容器:

$ java -Dsolr.solr.home=/tmp/solrhome -jar start.jar

通过http://localhost:8983/solr即可访问。

4. 在tomcat中运行Solr

将example/webapps/solr.war拷贝到tomcat的webapps目录下,然后参照上面的说明设置solr home值。tomcat版本可以使用tomcat-6.0.36。

其次,将example/lib/ext目录中的jar包拷贝到tomcat-6.0.36/webapps/solr/WEB-INF/lib目录下。

然后,将example/resources/log4j.properties也拷到classpath,或者在tomcat-6.0.36/webapps/solr/目录下新建了一个classes目录,将log4j.properties放进去。

这时候启动tomcat后访问http://localhost:8080/solr会提示错误,这是因为solr home目录下没有solr的配置文件和一些目录。请将solr-4.4.0/example/solr/目录下的文件拷贝到solr home目录下,例如:

$ cp -r solr-4.4.0/example/solr/ /tmp/solrhome/

最后,启动tomcat,然后通过浏览器访问。

5. 其他

关于中文支持

关于中文,solr内核支持UTF-8编码,所以在tomcat里的server.xml需要进行配置

<Connector port="8080" maxHttpHeaderSize="8192" URIEncoding="UTF-8" />

另外,向solr Post请求的时候需要转为utf-8编码。对solr 返回的查询结果也需要进行一次utf-8的转码。检索数据时对查询的关键字也需要转码,然后用“+”连接。

String[] array = StringUtils.split(query, null, 0);
for (String str : array) {
    result = result + URLEncoder.encode(str, "UTF-8") + "+";
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装和部署
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档