solr7在tomcat上的部署

一、前言html

solr是基於lucence的企業級搜索服務器。以前使用的都是4.x版本,可是在5.x以後solr的目錄結構已經發生了變化,不在提供war包。因此在tomcat部署的時候,稍有區別。尤爲如今的最新版本已是7.x了,部署的時候有一些變化。java

二、solr7.1.0的示例啓動mysql

因爲solr自己集成了jetty服務器,因此能夠直接啓動。在solr的bin文件加下執行:web

solr start
1sql


在文件中也要相關提示:數據庫

三、啓動效果apache

默認端口:8983
訪問地址:http://localhost:8983/solrtomcat


四、solr7在tomcat上的部署服務器

solr6.x以上都須要JDK1.8以上版本,solr7要用tomcat8才能啓動。這裏使用JDK1.8+tomcat8+solr7.x部署。
#####①準備環境:安裝JDK1.8,tomcat8
#####②將solr-7.1.0/server/solr-webapp/下的webapp複製到apache-tomcat-8.5.23/webapps/下而且重命名(能夠隨意命名),這裏命名爲solr。app

#####③複製solr-7.1.0/server/lib/ext下的全部jar,到apache-tomcat-8.5.23/webapps/solr/WEB-INF/lib/下。(沒錯,這個就是那個重命名solr下的WEB-INF/lib)
#####④複製solr-7.1.0/server/lib/下metrics相關的jar,到apache-tomcat-8.5.23/webapps/solr/WEB-INF/lib/下。

#####⑤複製solr-7.1.0/server/resources下的log4j.properties文件,到apache-tomcat-8.5.23/webapps/solr/WEB-INF/下的classes文件夾中。(classes文件夾若是沒有須要本身建立,這是日誌文件)
#####⑥建立solrhome:複製solr-7.1.0/server/下的solr文件夾,到任意目錄處(能夠從新命名,這裏重命名爲solr-home,筆者solrhome路徑爲:D:\20161010\test-demo\solr-test-7.1.0\solr-home),自定義solrhome。

#####⑦配置solrhome路徑:修改apache-tomcat-8.5.23/webapps/solr/WEB-INF/下的web.xml文件。

     
    <!-- 方法1:默認代碼爲註釋狀態。放開以後,替換<env-entry-value></env-entry-value>中間的值爲本身的solrhome -->
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:/20161010/test-demo/solr-test-7.1.0/solr-home</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    <!--
     方法2:
     修改tomcat的配置文件, 在apache-tomcat-8.5.23/bin/catalina.bat文件中的第二行加配置參數。也就是@echo off下面一行。
     
    set "JAVA_OPTS=-Dsolr.solr.home=D:/20161010/test-demo/solr-test-7.1.0/solr-home
    --> 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#####⑧取消權限控制,註釋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>
  
  -->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#####⑨初始化solr-home的數據,在solr-home文件下建一個core1(名字隨意取),複製solr-home/configsets/_default/下的conf文件夾,到新建的core1下,在core1下建立文件夾data(空文件加便可)和core.properties(內容只配置name=core1便可,這裏的name的值也就是再頁面要顯示的solrhome名稱)

#####⑩訪問http://localhost:8080/solr/index.html

選擇自定義的core1,能夠看到core1的相關信息。(部署over)

五、tomcat部署solr注意事項

tomcat7和solr7不兼容,一樣的方法使用tomcat7,訪問有異常。

core創建的時候,只要複製conf便可啓動訪問,data和core.properties能夠經過窗口建立。

六、自定義core,導入數據庫索引

這裏自定義的core爲core2,以此爲例。

#####①引入jar依賴:在apache-tomcat-8.5.23/webapps/solr/WEB-INF/lib/引入mysql的驅動(mysql-connector-java-5.1.32.jar),複製solr-7.1.0/dist/下的solr-dataimporthandler-7.1.0.jar和solr-dataimporthandler-extras-7.1.0.jar,到apache-tomcat-8.5.23/webapps/solr/WEB-INF/lib/的下面。
#####②複製solr-7.1.0/example/example-DIH/solr/db/conf/下的db-data-config.xml到solr-home/core2/conf/下,此處更名爲data-config.xml(能夠不更名)。修改內容的結果爲:

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/數據庫名" 
              user="root" 
              password="root"/>
  <document>
    <!--指定須要導入的數據庫表名,以及數據 -->
    <entity name="lsh_information" 
            query="select id,title,content,create_user_name,create_time from lsh_information">
    </entity>
  </document>
</dataConfig>
1
2
3
4
5
6
7
8
9
10
11
12
13
數據配置能夠參考官方文檔:https://wiki.apache.org/solr/DIHQuickStart
#####③修改solrconfig文件,添加導入信息。該信息必須放在requestHandler標籤的同級位置。

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>
1
2
3
4
5
#####④自定義solr的字段,在managed-schema文件中添加filed字段。(位置放在 text 字段後面便可)

    <field name="title" type="text_ik" indexed="true" stored="true" multiValued="false"/>
    <field name="content" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="create_user_name" type="string" indexed="true" stored="true" multiValued="false"/>
    <field name="create_time" type="pdate" indexed="true" stored="true" multiValued="false"/> 
1
2
3
4
#####⑤添加IK分詞器,引入IK分詞器的依賴到apache-tomcat-8.5.23/webapps/solr/WEB-INF/lib/下,配置IK分詞器(注意:放在fieldType同級附近)。

<fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
1
2
3
#####⑥啓動solr,數據導入。

#####⑦查詢結果


七、數據導入注意事項

IK分詞器最新版本是 IKAnalyzer2012FF_u1.jar,官方已經中止更新的。該最新版本不兼容solr7,使用的時候會沒法分詞。筆者這裏導入的是網上大佬改進的版本。

在使用q查詢的時候,若是想直接輸入查詢,須要在sorconfig中設置默認查詢。

八、參考資料

博文資料: http://blog.csdn.net/tanzhen1991910/article/details/53488398(此博文有提供修改過的IK分詞器)

官方資料:https://wiki.apache.org/solr  

相關文章
相關標籤/搜索