Solr全文检索框架:环境搭建和初次使用

 一、Solr简介

在一些大型门户网站、电子商务网站等都需要站内搜索(京东淘宝的搜索框)功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快 、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

解决方法:

1 单独使用Lucene实现

单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。

2 使用GoogleBaidu接口

通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统 依赖紧密,不方便扩展,不建议采用。

.3 使用Solr实现

基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。

Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene全文搜索服务器

二、环境搭建

1、解压Solr包

Solr 解压后server/solr-webapp下一个webapp目录,它就是Solr的Web项目,把它复制到tomcat的webapps目录下并改名为solr

以下是linux命令,windows同理

# 进入Solr的server目录下
/opt/modules/solr7/solr-7.7.0/server/solr-webapp/

# 复制webapp目录到tomcat-solr的webapps目录下
 cp -r webapp/ /usr/local/tomcat/apache-tomcat-9.0.16/webapps

# 将Solr的web应用改名
 cd /usr/local/tomcat/apache-tomcat-9.0.16/webapps
# 将webapp重命名为solr
 mv webapp/ solr

2、复制所需依赖jar包

复制solr-7.7.0\server\lib\ext下的所有jar包到apache-tomcat-9.0.16\webapps\solr\WEB-INF\lib下(即刚刚复制并重命名为solr的文件夹下)

cp ext/* /usr/local/tomcat/apache-tomcat-9.0.16/webapps/solr/WEB-INF/lib/

复制solr-7.7.0\server\lib下所有metrics-开头的jar包(一共有5个)到apache-tomcat-9.0.16\webapps\solr\WEB-INF\lib下

 cp metrics-* /usr/local/tomcat/apache-tomcat-9.0.16/webapps/solr/WEB-INF/lib/

3.配置solrhome路径

1)这个目录用于存储Solr Core(Solr实例)的数据及配置文件,以便存储Solr索引文件

在/usr/local/solr下创建solrhome文件夹

(复制solr-7.7.0\server\solr文件夹,到任意路径下(这里我们放在刚刚创建的solrhome文件夹下),并重命名为solrhome(命名随意),先创建再复制也可以)

# 复制solr目录下所有内容到solrhome  
cp -r * /usr/local/solr/ solrhome/

2)创建core实例:在solrhome目录下创建目录名为:new_core
这个就是我们后面要创建的SolrCore实例,当然你也可以改成自己想要的名字
 

cd solrhome
mkdir new_core

将configsets目录下的 sample_techproducts_configs 目录下的conf文件夹复制到test目录下

cp -r configsets/sample_techproducts_configs/conf/ new_core/

4.配置Tomcat服务器

1) 修改web.xml
修改复制到tomcat中的Solr项目中的WEB-INF目录下的web.xml配置文件

 cd /usr/local/tomcat/apache-tomcat-9.0.16/webapps/solr/WEB-INF/
 vim web.xml

修改solr_home路径指向我们刚刚创建的solrhome(如果没有,手动加入即可)

<!-- 修改solrhome路径 -->
  <env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/usr/local/solr/solrhome</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

2) 去掉安全验证
还是在web.xml文件中,把安全验证的去掉,不然每次登陆都需要用户名密码验证,麻烦,还有有一种说法:项目会报403错误。

<!-- Get rid of error message -->
  <!--
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>
  -->

启动tomcat测试

运行startup.sh文件

error:
Linux下启动和关闭tomcat报错,如下图所示:

原因:

因为启动tomcat会调用tomcat安装文件中的startup.bat,而它调用了catalina.bat则调用了setclasspath.bat。因此需要在setclasspath.bat的开头手动声明环境变量。

解决方案:
用vim打开tomcat的bin目录下的setclasspath.sh,添加JAVA_HOME和JRE_HOME两个环境变量(下图红色方框内),两个环境变量路径为您安装的java JDK的路径。

windows下将export改为set即可。

 #java development
 export JAVA_HOME=/usr/local/java/jdk1.8.0_201
 export JRE_HOME=/usr/local/java/jdk1.8.0_201/jre

成功用service tomcat start开启tomcat服务。

访问http://localhost:8080/solr/index.html,部署完成。外部访问则将localhost换为服务器ip地址即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值