Solr單機環境搭建及部署


一、定義

官網的定義:

Solr是基於Lucene構建的流行,快速,開放源代碼的企業搜索平台。它具有高度的可靠性,可伸縮性和容錯能力,可提供分布式索引,復制和負載平衡查詢,自動故障轉移和恢復,集中式配置等。 Solr支持許多世界上最大的互聯網站點的搜索和導航功能。

簡單的理解solr就是一款搜索框架,通常用實現查詢功能,比如電商網站的商品檢索。

二、環境搭建

本文基於以下開源組件版本搭建,約定下載后組件和解壓縮的文件都放置在/opt目錄下

  • solr-8.2.0

  • apache-tomcat-8.5.47

首先下載solr-8.2.0.tgz,可以使用wget命令:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.2.0/solr-8.2.0.tgz

解壓縮:

tar -zxvf solr-8.2.0.tgz -C .

解壓后,/opt目錄下會多一個solr-8.2.0目錄

下載apache-tomcat-8.5.47:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz

解壓縮:

tar -zxvf apache-tomcat-8.5.47.tar.gz

為了將solr部署到tomcat服務器,不使用solr自帶的jetty,首先在/opt目錄下創建一個目錄用於部署solr服務,名稱無限制,這里取名solr了。

mkdir solr

復制一份tomcat到/opt/solr目錄下,重命名為tomcat8

cp -r apache-tomcat-8.5.47 solr/tomcat8

solr本質是一個web服務,我們將它復制到tomcat8下:

cp -r solr-8.2.0/server/solr-webapp/webapp solr/tomcat8/webapps/solr

復制solr-8.2.0/server/lib/ext下的部分jar到solr目錄中,為了簡便可以完全復制所有的,然后忽略掉disruptor-3.4.2.jar

cp solr-8.2.0/server/lib/ext/* solr/tomcat8/webapps/solr/WEB-INF/lib/

復制solr-8.2.0/server/lib下以metrics開頭的jar到solr目錄:

cp solr-8.2.0/server/lib/metrics* solr/tomcat8/webapps/solr/WEB-INF/lib/

上面這兩項注意是復制到solr服務的lib目錄下,不是復制到tomcat8/lib下。

復制solr-8.2.0/server/resources下的log4j*.xml文件到solr

首先在solr創建classes目錄:

mkdir solr/tomcat8/webapps/solr/WEB-INF/classes

復制日志配置文件:

cp solr-8.2.0/server/resources/log4j2*.xml solr/tomcat8/webapps/solr/WEB-INF/classes/

將solr-8.2.0/server/solr目錄復制到solr/目錄下,並重命名為solrhome:

cp -r solr-8.2.0/server/solr solr/solrhome

修改日志路徑

vim solr/tomcat8/webapps/solr/WEB-INF/classes/log4j2.xml

指定fileName和filePattern的路徑:

<RollingRandomAccessFile
        name="MainLogFile"
        fileName="/opt/solr/solrhome/log/solr.log"
        filePattern="/opt/solr/solrhome/log/solr.log.%i" >
      <PatternLayout>
     ....

關聯solr及solrhome

修改solr里的web.xml文件

vim solr/tomcat8/webapps/solr/WEB-INF/web.xml

web.xml中<web-app></web-app>標簽內添加如下配置,指定sorlhome路徑

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

注釋掉下方的下列配置:

<!--
<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,訪問服務器的solr服務:

sh solr/tomcat8/bin/start.sh

訪問地址:

localhost:8080/solr/index.html

三、配置IK分詞器

首先從IK分詞器下載與solr版本匹配的jar包,並放置在solr服務的lib目錄下,

cp ik-analyzer-8.2.0.jar solr/tomcat8/webapps/solr/WEB-INF/lib/

在solr/solrhome/下創建目錄test_core,拷貝配置文件到test_core中:

cp -r solr/solrhome/configsets/sample_techproducts_configs/conf/ solr/solrhome/test_core/

修改conf中的solr.xml文件,修改jar路徑:

<lib dir="${solr.install.dir:../}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="${solr.install.dir:../}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="${solr.install.dir:../}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="${solr.install.dir:../}/dist/" regex="solr-ltr-\d.*\.jar" />

<lib dir="${solr.install.dir:../}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-\d.*\.jar" />

修改managed-schema文件,添加ik分詞器配置:

<!-- ik分詞器 --> 
<fieldType name="text_ik" class="solr.TextField"> 
	<analyzer type="index"> 
		<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> 
		<filter class="solr.LowerCaseFilterFactory"/> 
	</analyzer> 
	<analyzer type="query"> 
		<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> 
		<filter class="solr.LowerCaseFilterFactory"/> 
	</analyzer> 
</fieldType>

重啟solr服務,打開管理界面,添加test_core:

打開管理界面,分詞示例:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM