從Solr官方網站(http://archive.apache.org/dist/lucene/solr/7.3.1/ )下載Solr最新版本,html
根據Solr的運行環境,Linux下須要下載solr-7.3.1.tgz,windows下須要下載solr-7.3.1.zip。java
Solr是java開發的,在windows上面和Linux上面的安裝同樣。mysql
windows上面的安裝教程能夠參照:http://www.cnblogs.com/jepson6669/p/9053880.htmlweb
1.須要安裝jdk【須要jdk1.8及以上版本】sql
2.安裝環境CentOS7數據庫
3.須要安裝tomcat(非必需,可使用內置的小服務器jetty)apache
個人環境:vim
Solr:Solr7.3.1windows
Jdk:1.8.0_162tomcat
Tomcat:apache-tomcat-8.5.31
第一步:把solr的壓縮包上傳到Linux系統
第二步:在usr/local/建立solr目錄
# mkdir /usr/local/solr
第三步:解壓solr到剛剛建立的solr目錄下
[root@i soft]# tar -xvf solr-7.3.1.tgz -C /usr/local/solr
第四步:解壓解壓tomcat到solr目錄下
[root@i soft]# tar -xvf apache-tomcat-8.5.31.tar.gz -C /usr/local/solr
第五步:把 solr\solr-7.3.1\server\solr-webapp下的 webapp 文件夾拷貝到tomcat 的webapps下,重命名爲solr7,也能夠是其餘名字
[root@iz solr-webapp]# cp -r webapp /usr/local/solr/apache-tomcat-8.5.31/webapps/
# mv webapp solr7
第六步:拷貝solr-7.3.1\server\lib\ext 下的jar包到 tomcat\webapps\solr7 項目的WEB-INF\lib下
[root@i ext]# cp * /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
第七步:拷貝solr-7.3.1\server\lib\目錄下gmetric4j-1.0.7.jar,以及以metrics開頭的jar包拷貝到WEB-INF\lib下
[root@i lib]# cp gmetric4j-1.0.7.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
[root@iz lib]# cp metrics-*.* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
另外還須要拷貝/usr/local/solr/solr/dist下面的以solr-dataimporthandler開頭的jar包WEB-INF\lib下
[root@ dist]# cp /usr/local/solr/solr/dist/solr-dataimporthandler-*.* /usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib/
第八步:拷貝solr-7.3.1\server 下的solr文件夾到/usr/local/solr目錄下,重命名爲solrhome。
[root@i server]# cp -r solr /usr/local/solr/
[root@iz solr]# mv solr solrhome
第九步:關聯solr和solrhome.須要修改tomcat\webapps\ solr7\WEB-INF\web.xml
第十步:解決日誌不可以正常顯示問題
1.在/sor7/WEB-INF/下面建立一個classes文件夾
2.拷貝solr7.3.1\server\resources下的log4j.properties到剛剛建立的classes目錄下。
3.在/usr/local/solr/建立一個logs文件夾
4.修改log4j.properties文件
第十一步:修改tomcat的端口,避免衝突
第十二步:啓動tomcat,訪問solr時後面記得加上「index.hmtl」
修改/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/web.xml文件。
而後重啓tomcat.
而後訪問終於看到了歡迎頁面:
這也就是說明安裝成功了。
name:自定義的名字,建議和instanceDir保持一致
instanceDir:solrhome目錄下的示例類目
dataDir:默認填data便可
config:指定配置文件,/usr/local/solrhome/new_core/conf/solrconfig.xml
schema:指定schema.xml文件,new_core/conf/schema文件(其實是managed-schema文件)
注意!在schema.xml下面有一個感嘆號!
若是你無論他,直接點擊Add Core會提示solrconfig.xml文件找不到
第一步:進入到solrhome/new_core目錄,複製/solr-7.3.1/server/solr/configsets/_default/conf文件夾到new_core目錄下。
[root@i new_core]# cp -r /usr/local/solr/solr-7.3.1/server/solr/configsets/_default/conf ./
第二步:切換到solrhome目錄,複製/usr/local/solr/solr-7.3.1/contrib文件夾到solrhome目錄下。
[root@i solrhome]# cp -r /usr/local/solr/solr-7.3.1/contrib/ ./
第三步: 複製solr-7.3.1/dist文件夾到solrhome目錄下
[root@iz2ze7k6ycnx8b40ynghxtz solrhome]# cp -r /usr/local/solr/solr-7.3.1/dist/ ./
第四步:修改核心配置文件solrhome/new_core/conf/solrconfig.xml,
主要是修改contrib目錄,dist目錄的相對位置。
<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:..}/contrib/velocity/lib" regex=".*\.jar" /> <lib dir="${solr.install.dir:..}/dist/" regex="solr-velocity-\d.*\.jar" />
第五步:重啓服務便可正常建立Core,而後instanceDir文件夾(new_core)裏會自動生成一個core.properties文件。
new_core文件夾裏面的內容以下:
core.properties文件中的內容以下:
到這裏就解決了不能添加核心問題。
之後再次須要建立solrCore核心的時候,就不用這麼麻煩了。
能夠直接複製第一建立的new_core目錄,修改core.properties文件中的name便可。
準備好Ikanalyzer文件,目錄結構以下:
裏面包括IK Analyzer 2個架包:ik-analyzer-solr5-5.x.jar、solr-analyzer-ik-5.1.0.jar
IK配置文件 IKAnalyzer.cfg.xml、ext.dic、stopword.dic
第一步:拷貝ik-analyzer-solr5-5.x.jar到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目錄下面
第二步:拷貝ext.dic ,stopword.dic,ikAnalyzer.cfg.xml到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/classes目錄下面。
前面的安裝過程當中我已經建立過classes目錄,若是沒有的話,建立一個。
ikAnalyzer.cfg.xml文件內容以下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 擴展配置</comment> <!--用戶能夠在這裏配置本身的擴展字典 --> <entry key="ext_dict">ext.dic;</entry> <!--用戶能夠在這裏配置本身的擴展中止詞字典--> <entry key="ext_stopwords">stopword.dic;</entry> </properties>
ext.dic裏面添加新詞彙:好比「王者榮耀」這類的。
stopword.dic裏面添加不須要分詞的詞語,好比 「的 了 個 你 我 他」
第三步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件。
1.添加一個自定義的fieldType
<!-- IKAnalyzer--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
2.定義一個field,指定field的Type屬性爲text_ik
<!--IKAnalyzer Field--> <field name="title_ik" type="text_ik" indexed="true" stored="true" /> <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>
配置完成後的效果以下:
第四步:重啓tomcat,讓配置生效。
第五步:測試
首先須要準備好拼音分詞器所需的jar包。
另外還須要用到第六步的ikanalyzer 中文分詞器裏面的一個jar包。
第一步:將solr-analyzer-ik-5.1.0.jar,pinyinAnalyzer4.3.1.jar,pinyin4j-2.5.0.jar三個jar包
導入到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目錄下面。
第二步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件
在其中加入下面的內容
<!-- IK 拼音分詞 --> <fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/> <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" /> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/> <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" /> </analyzer> </fieldType>
第三步:重啓tomcat,查看效果
配置前的效果
第一步:把dataimport插件的依賴的jar包添加到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下,lib目錄沒有就建立一個
jar包的位置:
第二步:導入數據庫的驅動包到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下
數據的jar包須要本身去找。
一二兩步後的效果:
第三步:修改/usr/local/solr/solrhome/new_core/conf下面的solrconfig.xml配置文件,添加一個requestHandler
<lib dir="${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" /> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
第四步:建立一個data-config.xml文件保存到/usr/local/solr/solrhome/new_core/conf目錄下
# vim data-config.xml
裏面的內容以下:
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://39.105.94.154:3306/lucene" user="tom" password="tom"/> <document> <entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products "> <field column="pid" name="id"/> <field column="name" name="product_name"/> <field column="catalog_name" name="product_catalog_name"/> <field column="price" name="product_price"/> <field column="description" name="product_description"/> <field column="picture" name="product_picture"/> </entity> </document> </dataConfig>
dataSource和entity裏面的內容根據本身的實際狀況修改.
對於沒有的域須要本身配置。
<!--product--> <field name="product_name" type="text_ik" indexed="true" stored="true"/> <field name="product_price" type="float" indexed="true" stored="true"/> <field name="product_description" type="text_ik" indexed="true" stored="false" /> <field name="product_picture" type="string" indexed="false" stored="true" /> <field name="product_catalog_name" type="string" indexed="true" stored="true" /> <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="product_name" dest="product_keywords"/> <copyField source="product_description" dest="product_keywords"/>
在managed-schema文件中加入上面的代碼,效果以下
第五步:重啓tomcat,讓配置生效。
第六步:點擊Execute按鈕導入數據。
勾選Auto-Refresh Status 能夠自動刷新,看到導入的狀態
導入數據前會先清空索引庫,而後再導入。