1 1、使用Solr實現。 2 基於Solr實現站內搜索擴展性較好而且能夠減小程序員的工做量,由於Solr提供了較爲完備的搜索引擎解決方案,所以在門戶、論壇等系統中經常使用此方案。 3 4 2、什麼是Solr。 5 Solr是Apache下的一個頂級開源項目,採用Java開發,它是基於Lucene的全文搜索服務器。Solr提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展,並對索引、 6 搜索性能進行了優化。 7 Solr能夠獨立運行,運行在Jetty、Tomcat等這些Servlet容器中,Solr索引的實現方法很簡單,用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔, 8 Solr根據xml文檔添加、刪除、更新索引 。Solr搜索只須要發送 HTTP GET 請求,而後對 Solr返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。 9 Solr不提供構建UI的功能,Solr提供了一個管理界面,經過管理界面能夠查詢Solr的配置和運行狀況。 10 11 3、Solr與Lucene的區別。 12 Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的全文檢索引擎,Lucene提供了完整的查詢引擎和索引引擎,目的是爲軟件開發人員提供一個簡單易用的 13 工具包,以方便的在目標系統中實現全文檢索的功能,或者以Lucene爲基礎構建全文檢索引擎。 14 Solr的目標是打造一款企業級的搜索引擎系統,它是一個搜索引擎服務,能夠獨立運行,經過Solr能夠很是快速的構建企業的搜索引擎,經過Solr也能夠高效的完成站內搜 15 索功能。
一、Solr的運行須要java環境(Solr是java開發實現的,Solr至關因而一個web的war工程,須要部署到容器裏面,能夠選擇jetty或者tomcat),因此本身先安裝jdk吧,這裏安裝的是jdk1.7.0_55。css
須要運行在一個Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默認提供Jetty(java寫的Servlet容器),本教程使用Tocmat做爲Servlet容器。html
安裝過程步驟大體以下所示:java
1 [root@localhost package]# ls 2 apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz 3 [root@localhost package]# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/soft/ 4 [root@localhost package]# vim /etc/profile 5 [root@localhost package]# source /etc/profile 6 [root@localhost package]# java 7 [root@localhost package]# javac 8 [root@localhost package]# java -version
二、將Solr的壓縮包上傳到服務器上面,solr-4.10.3.tgz.tgz,而後進行解壓縮操做。mysql
注意:Solr的目錄介紹。linux
a、bin裏面命令是啓動solr的二進制命令,通常不適用此中方式啓動,bin裏面的命令會默認啓動solr服務(使用的是jetty容器,jetty是一個servlet容器,直接啓動bin/solr也能夠啓動,可是通常不適用)。git
b、contrib是擴展包。程序員
c、dist裏面有solr的war包(solr-4.10.3.war),能夠將solr部署到tomcat服務器中。solr-solrj-4.10.3.jar是solr的客戶端。web
d、docs是文檔。redis
e、example是案例,example裏面的solr能夠做爲solr home(solr的家,裏面保存了solr服務全部的配置文件、solr庫)。
你可使用solr和jetty整合,也能夠和tomcat整合,由於比較熟悉tomcat,因此這裏整合tomcat。
sql
[root@localhost package]# tar -zxvf solr-4.10.3.tgz.tgz -C /home/hadoop/soft/
1 [root@localhost package]# ls 2 apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz 3 [root@localhost package]# tar -zxvf solr-4.10.3.tgz.tgz -C /home/hadoop/soft/ 4 [root@localhost package]# ls 5 apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz 6 [root@localhost package]# cd .. 7 [root@localhost hadoop]# ls 8 package soft 9 [root@localhost hadoop]# cd soft/ 10 [root@localhost soft]# ls 11 jdk1.7.0_55 solr-4.10.3 12 [root@localhost solr-4.10.3]# ls 13 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt 14 [root@localhost solr-4.10.3]#
三、安裝tomcat服務器。
[root@localhost package]# tar -zxvf apache-tomcat-7.0.47.tar.gz -C /home/hadoop/soft/
1 [root@localhost package]# ls 2 apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz 3 [root@localhost package]# tar -zxvf apache-tomcat-7.0.47.tar.gz -C /home/hadoop/soft/
而後將tomcat安裝到/user/local目錄裏面:
1 [root@localhost soft]# mkdir /usr/local/solr 2 [root@localhost soft]# cp -r apache-tomcat-7.0.47/ /usr/local/solr/tomcat 3 [root@localhost soft]# cd /usr/local/solr/tomcat/ 4 [root@localhost tomcat]# ls 5 bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 6 [root@localhost tomcat]#
四、部署好tomcat之後,將war包部署到tomcat下面便可。而後進行解壓縮solr操做,啓動tomcat就能夠完成solr的解壓縮操做。
1 [root@localhost tomcat]# cp /home/hadoop/soft/solr-4.10.3/dist/solr-4.10.3.war /usr/local/solr/tomcat/webapps/ 2 You have mail in /var/spool/mail/root 3 [root@localhost tomcat]# cd /usr/local/solr/tomcat/webapps/ 4 [root@localhost webapps]# ls 5 docs examples host-manager manager ROOT solr-4.10.3.war 6 [root@localhost webapps]#
啓動tomcat完成解壓縮solr的war包。
1 [root@localhost webapps]# cd /usr/local/solr/tomcat/ 2 [root@localhost tomcat]# ls 3 bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 4 [root@localhost tomcat]# bin/startup.sh 5 Using CATALINA_BASE: /usr/local/solr/tomcat 6 Using CATALINA_HOME: /usr/local/solr/tomcat 7 Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp 8 Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55 9 Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar 10 [root@localhost tomcat]# tail -f logs/catalina.out 11 Sep 01, 2019 5:16:20 AM org.apache.catalina.startup.HostConfig deployDirectory 12 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/manager 13 Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory 14 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOT 15 Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory 16 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examples 17 Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory 18 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-manager 19 Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory 20 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docs 21 Sep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol start 22 INFO: Starting ProtocolHandler ["http-bio-8080"] 23 Sep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol start 24 INFO: Starting ProtocolHandler ["ajp-bio-8009"] 25 Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.Catalina start 26 INFO: Server startup in 6031 ms
能夠看到solr的war包已經解壓縮了。
而後關閉solr,將一些jar包複製到solr裏面。關閉tomcat,刪除webapps裏面的solr-4.10.3.war這個war 包,你能夠將solr-4.10.3.war這個war包刪除了或者留着也行。刪除的話,必定要先關閉tomcat,而後進行刪除war包操做。
1 bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 2 [root@localhost tomcat]# bin/shutdown.sh 3 Using CATALINA_BASE: /usr/local/solr/tomcat 4 Using CATALINA_HOME: /usr/local/solr/tomcat 5 Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp 6 Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55 7 Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar 8 [root@localhost tomcat]#
複製一些日誌相關的jar包加到solr裏面。
1 [root@localhost soft]# cd solr-4.10.3/ 2 [root@localhost solr-4.10.3]# ls 3 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt 4 [root@localhost solr-4.10.3]# clear 5 [root@localhost solr-4.10.3]# ls 6 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt 7 [root@localhost solr-4.10.3]# cd example/ 8 [root@localhost example]# ls 9 contexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps 10 [root@localhost example]# cd lib/ 11 [root@localhost lib]# ls 12 ext jetty-http-8.1.10.v20130312.jar jetty-security-8.1.10.v20130312.jar jetty-util-8.1.10.v20130312.jar servlet-api-3.0.jar 13 jetty-continuation-8.1.10.v20130312.jar jetty-io-8.1.10.v20130312.jar jetty-server-8.1.10.v20130312.jar jetty-webapp-8.1.10.v20130312.jar 14 jetty-deploy-8.1.10.v20130312.jar jetty-jmx-8.1.10.v20130312.jar jetty-servlet-8.1.10.v20130312.jar jetty-xml-8.1.10.v20130312.jar 15 [root@localhost lib]# cd ext/ 16 [root@localhost ext]# ls 17 jcl-over-slf4j-1.7.6.jar jul-to-slf4j-1.7.6.jar log4j-1.2.17.jar slf4j-api-1.7.6.jar slf4j-log4j12-1.7.6.jar 18 [root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/ 19 [root@localhost ext]# cd /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/ 20 [root@localhost lib]# ls 21 antlr-runtime-3.5.jar commons-lang-2.6.jar hppc-0.5.2.jar lucene-analyzers-common-4.10.3.jar lucene-join-4.10.3.jar org.restlet-2.1.1.jar wstx-asl-3.2.7.jar 22 asm-4.1.jar concurrentlinkedhashmap-lru-1.2.jar httpclient-4.3.1.jar lucene-analyzers-kuromoji-4.10.3.jar lucene-memory-4.10.3.jar org.restlet.ext.servlet-2.1.1.jar zookeeper-3.4.6.jar 23 asm-commons-4.1.jar dom4j-1.6.1.jar httpcore-4.3.jar lucene-analyzers-phonetic-4.10.3.jar lucene-misc-4.10.3.jar protobuf-java-2.5.0.jar 24 commons-cli-1.2.jar guava-14.0.1.jar httpmime-4.3.1.jar lucene-codecs-4.10.3.jar lucene-queries-4.10.3.jar slf4j-api-1.7.6.jar 25 commons-codec-1.9.jar hadoop-annotations-2.2.0.jar jcl-over-slf4j-1.7.6.jar lucene-core-4.10.3.jar lucene-queryparser-4.10.3.jar slf4j-log4j12-1.7.6.jar 26 commons-configuration-1.6.jar hadoop-auth-2.2.0.jar joda-time-2.2.jar lucene-expressions-4.10.3.jar lucene-spatial-4.10.3.jar solr-core-4.10.3.jar 27 commons-fileupload-1.2.1.jar hadoop-common-2.2.0.jar jul-to-slf4j-1.7.6.jar lucene-grouping-4.10.3.jar lucene-suggest-4.10.3.jar solr-solrj-4.10.3.jar 28 commons-io-2.3.jar hadoop-hdfs-2.2.0.jar log4j-1.2.17.jar lucene-highlighter-4.10.3.jar noggit-0.5.jar spatial4j-0.4.1.jar 29 [root@localhost lib]#
操做以下所示:
複製完jar包,開始配置solr home。
1 [root@localhost solr-4.10.3]# cd /home/hadoop/soft/solr-4.10.3/ 2 [root@localhost solr-4.10.3]# ls 3 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt 4 [root@localhost solr-4.10.3]# clear 5 [root@localhost solr-4.10.3]# ls 6 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt 7 [root@localhost solr-4.10.3]# cd example/ 8 [root@localhost example]# ls 9 contexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps 10 [root@localhost example]# cp -r solr /usr/local/solr/solrhome 11 [root@localhost example]# cd /usr/local/solr/solrhome/ 12 [root@localhost solrhome]# ls 13 bin collection1 README.txt solr.xml zoo.cfg 14 [root@localhost solrhome]#
而後進行solr home的配置文件配置,solr也已經安裝好了,solrhome也已經配置好了,而後將將solr和solrhome進行關聯,創建關係,solr不知道solrhome在那裏,那麼
配置一下,告訴solr,solrhome在那裏。操做方式有,能夠修改tomcat的配置文件,或者去修改solr的web.xml,這種方式比較簡單。建議使用。
1 [root@localhost ~]# ls 2 anaconda-ks.cfg Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates Videos 3 [root@localhost ~]# cd /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/ 4 [root@localhost WEB-INF]# ls 5 lib weblogic.xml web.xml 6 [root@localhost WEB-INF]# vim web.xml
配置方式以下所示:
1 <env-entry> 2 <env-entry-name>solr/home</env-entry-name> 3 <!-- <env-entry-value>/put/your/solr/home/here</env-entry-value> --> 4 <env-entry-value>/usr/local/solr/solrhome/</env-entry-value> 5 <env-entry-type>java.lang.String</env-entry-type> 6 </env-entry>
這樣你的solr就已經配置好了,而後啓動你的tomcat便可。
能夠將solr的log4j.properties文件在Tomcat下webapps/solr/WEB-INF目錄中建立文件classes文件夾,
複製Solr目錄下/home/hadoop/soft/solr-4.10.3/example/resources至Tomcat下webapps/solr/WEB-INF/classes目錄
1 [root@localhost WEB-INF]# cd /usr/local/solr/tomcat/ 2 [root@localhost tomcat]# ls 3 bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 4 [root@localhost tomcat]# clear 5 [root@localhost tomcat]# bin/startup.sh 6 Using CATALINA_BASE: /usr/local/solr/tomcat 7 Using CATALINA_HOME: /usr/local/solr/tomcat 8 Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp 9 Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55 10 Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar 11 [root@localhost tomcat]# tail -f logs/catalina.out 12 Sep 03, 2019 5:32:27 AM org.apache.coyote.AbstractProtocol init 13 INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 14 Sep 03, 2019 5:32:27 AM org.apache.catalina.startup.Catalina load 15 INFO: Initialization processed in 1850 ms 16 Sep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardService startInternal 17 INFO: Starting service Catalina 18 Sep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardEngine startInternal 19 INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 20 Sep 03, 2019 5:32:28 AM org.apache.catalina.startup.HostConfig deployWAR 21 INFO: Deploying web application archive /usr/local/solr/tomcat/webapps/solr-4.10.3.war 22 log4j:WARN No appenders could be found for logger (org.apache.solr.client.solrj.impl.HttpClientUtil). 23 log4j:WARN Please initialize the log4j system properly. 24 log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 25 Sep 03, 2019 5:32:41 AM org.apache.catalina.startup.HostConfig deployDirectory 26 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/manager 27 Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory 28 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOT 29 Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory 30 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examples 31 Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory 32 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-manager 33 Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory 34 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docs 35 Sep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol start 36 INFO: Starting ProtocolHandler ["http-bio-8080"] 37 Sep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol start 38 INFO: Starting ProtocolHandler ["ajp-bio-8009"] 39 Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.Catalina start 40 INFO: Server startup in 14797 ms
能夠查看啓動信息,而後啓動完成了之後能夠經過頁面查看solr的信息:
注意:訪問地址:http://192.168.110.142:8080/solr-4.10.3
其中8080是tomcat的端口號,而後solr-4.10.3是webapps下面的solr項目的名稱,你能夠修改成solr,這也訪問比較方便些。
關於solr的collection,一個collection就是一個獨立的索引庫。不一樣的collection以前的索引庫沒有關係。
如何將mysql中的業務數據導入到solr裏面呢?
首先判斷出須要將哪些字段添加到solr裏面,而後將這些字段加到索引庫裏面,solr裏面有一個要求,添加一個文檔的時候,這個文檔必須有一個id,若是要添加文檔,那麼這些域必須在schema.xml裏面定義好,避免隨便添加其餘字段的狀況,在schema.xml裏面定義的話,須要修改一下schema.xml的配置文件,在這裏面定義咱們本身的業務域,因爲咱們使用的是中文,因此要指定一箇中文分析器,先將業務域定義好(判斷好的哪些字段,定義業務域),而後向這裏面導入數據就能夠了,中文分析器要使用IK Analyzer 2012FF_hf1。
注意:IKAnalyzer2012FF_u1.jar這個是jar包。
ext_stopword.dic這個是提供詞詞典
IKAnalyzer.cfg.xml這個是配置文件
LICENSE.txt
mydict.dic這個是擴展詞詞典
IKAnalyzer中文分詞器V2012_FF使用手冊.pdf
先將這個jar包加到本身的工程裏面去。而後在schema.xml配置文件裏面定義一個fieldType, 指定咱們的分析器使用的是IK,而後定義域的時候指定使用的fieldType是咱們本身定義好的fieldType。而後這個域就可使用咱們本身指定的中文分析器了。
首先將IK Analyzer 2012FF_hf1這個IK傳到本身的服務器上面。
1 [root@localhost package]# ll 2 total 292832 3 -rwxrw-rw-. 1 root root 8234674 Jul 27 22:27 apache-tomcat-7.0.47.tar.gz 4 drwxr-xr-x. 3 root root 4096 Sep 5 05:34 IK Analyzer 2012FF_hf1 5 -rw-r--r--. 1 root root 2142180 Sep 5 05:34 IK Analyzer 2012FF_hf1.rar 6 -rwxrw-rw-. 1 root root 139463702 Jul 27 22:35 jdk-7u55-linux-i586.tar.gz 7 -rwxrw-rw-. 1 root root 150010621 Jul 27 22:33 solr-4.10.3.tgz.tgz 8 [root@localhost package]# cd IK\ Analyzer\ 2012FF_hf1 9 [root@localhost IK Analyzer 2012FF_hf1]# ls 10 doc ext_stopword.dic IKAnalyzer2012FF_u1.jar IKAnalyzer.cfg.xml IKAnalyzer???ķִ???V2012_FFʹ???ֲ?.pdf LICENSE.txt mydict.dic NOTICE.txt 11 [root@localhost IK Analyzer 2012FF_hf1]# ll 12 total 2004 13 drwxr-xr-x. 5 root root 4096 Sep 5 05:34 doc 14 -rw-r--r--. 1 root root 168 Sep 5 05:34 ext_stopword.dic 15 -rw-r--r--. 1 root root 1165908 Sep 5 05:34 IKAnalyzer2012FF_u1.jar 16 -rw-r--r--. 1 root root 419 Sep 5 05:34 IKAnalyzer.cfg.xml 17 -rw-r--r--. 1 root root 841268 Sep 5 05:34 IKAnalyzer???ķִ???V2012_FFʹ???ֲ?.pdf 18 -rw-r--r--. 1 root root 17778 Sep 5 05:34 LICENSE.txt 19 -rw-r--r--. 1 root root 34 Sep 5 05:34 mydict.dic 20 -rw-r--r--. 1 root root 278 Sep 5 05:34 NOTICE.txt 21 [root@localhost IK Analyzer 2012FF_hf1]#
而後將IKAnalyzer2012FF_u1.jar這個jar包添加到solr裏面。
1 [root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/ 2 [root@localhost IK Analyzer 2012FF_hf1]# ll /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/IKAnalyzer2012FF_u1.jar 3 -rw-r--r--. 1 root root 1165908 Sep 5 05:39 /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/IKAnalyzer2012FF_u1.jar 4 [root@localhost IK Analyzer 2012FF_hf1]#
而後將ext_stopword.dic這個是提供詞詞典,IKAnalyzer.cfg.xml這個是配置文件,mydict.dic這個是擴展詞詞典添加到classpath裏面。對於這個solr項目的classpath至關於在WEB-INF下面的classes。
1 total 16 2 drwxr-xr-x. 2 root root 4096 Sep 5 05:39 lib 3 -rw-r--r--. 1 root root 1210 Dec 1 2014 weblogic.xml 4 -rw-r--r--. 1 root root 7117 Sep 3 05:30 web.xml 5 [root@localhost IK Analyzer 2012FF_hf1]# mkdir /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/clases 6 [root@localhost IK Analyzer 2012FF_hf1]# 7 [root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/classes 8 [root@localhost IK Analyzer 2012FF_hf1]# ll /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/classes 9 total 12 10 -rw-r--r--. 1 root root 168 Sep 5 05:44 ext_stopword.dic 11 -rw-r--r--. 1 root root 419 Sep 5 05:44 IKAnalyzer.cfg.xml 12 -rw-r--r--. 1 root root 34 Sep 5 05:44 mydict.dic 13 [root@localhost IK Analyzer 2012FF_hf1]#
而後,這個中文分析器就配置好了。而後呢,開始定義fieldType,而後指定咱們使用這個中文分析器,在solrhome裏面定義咱們的fieldType。路徑是這裏,/usr/local/solr/solrhome/collection1/conf,而後這個conf裏面兩個配置文件,兩個配置文件比較重要schema.xml和solrconfig.xml。solrconfig.xml這個配置文件,配置了solr服務的相關配置,schema.xml配置了全部使用到的業務域(業務域和業務域的類型)。
1 [root@localhost ~]# cd /usr/local/solr/solrhome/ 2 [root@localhost solrhome]# ls 3 bin collection1 README.txt solr.xml zoo.cfg 4 [root@localhost solrhome]# ll 5 total 20 6 drwxr-xr-x. 2 root root 4096 Sep 1 05:27 bin 7 drwxr-xr-x. 4 root root 4096 Sep 3 05:32 collection1 8 -rw-r--r--. 1 root root 2473 Sep 1 05:27 README.txt 9 -rw-r--r--. 1 root root 1715 Sep 1 05:27 solr.xml 10 -rw-r--r--. 1 root root 501 Sep 1 05:27 zoo.cfg 11 [root@localhost solrhome]# cd collection1/ 12 [root@localhost collection1]# ls 13 conf core.properties data README.txt 14 [root@localhost collection1]# cd conf/ 15 [root@localhost conf]# ls 16 admin-extra.html clustering lang protwords.txt _schema_analysis_synonyms_english.json solrconfig.xml synonyms.txt xslt 17 admin-extra.menu-bottom.html currency.xml mapping-FoldToASCII.txt _rest_managed.json schema.xml spellings.txt update-script.js 18 admin-extra.menu-top.html elevate.xml mapping-ISOLatin1Accent.txt _schema_analysis_stopwords_english.json scripts.conf stopwords.txt velocity 19 [root@localhost conf]# ll 20 total 292 21 -rw-r--r--. 1 root root 1068 Sep 1 05:27 admin-extra.html 22 -rw-r--r--. 1 root root 928 Sep 1 05:27 admin-extra.menu-bottom.html 23 -rw-r--r--. 1 root root 926 Sep 1 05:27 admin-extra.menu-top.html 24 drwxr-xr-x. 3 root root 4096 Sep 1 05:27 clustering 25 -rw-r--r--. 1 root root 3974 Sep 1 05:27 currency.xml 26 -rw-r--r--. 1 root root 1348 Sep 1 05:27 elevate.xml 27 drwxr-xr-x. 2 root root 4096 Sep 1 05:27 lang 28 -rw-r--r--. 1 root root 78514 Sep 1 05:27 mapping-FoldToASCII.txt 29 -rw-r--r--. 1 root root 2868 Sep 1 05:27 mapping-ISOLatin1Accent.txt 30 -rw-r--r--. 1 root root 873 Sep 1 05:27 protwords.txt 31 -rw-r--r--. 1 root root 33 Sep 1 05:27 _rest_managed.json 32 -rw-r--r--. 1 root root 450 Sep 1 05:27 _schema_analysis_stopwords_english.json 33 -rw-r--r--. 1 root root 172 Sep 1 05:27 _schema_analysis_synonyms_english.json 34 -rw-r--r--. 1 root root 60689 Sep 1 05:27 schema.xml 35 -rw-r--r--. 1 root root 921 Sep 1 05:27 scripts.conf 36 -rw-r--r--. 1 root root 74827 Sep 1 05:27 solrconfig.xml 37 -rw-r--r--. 1 root root 13 Sep 1 05:27 spellings.txt 38 -rw-r--r--. 1 root root 781 Sep 1 05:27 stopwords.txt 39 -rw-r--r--. 1 root root 1119 Sep 1 05:27 synonyms.txt 40 -rw-r--r--. 1 root root 1416 Sep 1 05:27 update-script.js 41 drwxr-xr-x. 2 root root 4096 Sep 1 05:27 velocity 42 drwxr-xr-x. 2 root root 4096 Sep 1 05:27 xslt 43 [root@localhost conf]#
而後開始配置schema.xml。路徑是這裏,/usr/local/solr/solrhome/collection1/conf,而後這個conf裏面兩個配置文件,兩個配置文件比較重要schema.xml和solrconfig.xml。solrconfig.xml這個配置文件,配置了solr服務的相關配置,schema.xml配置了全部使用到的業務域。
定義一個fieldType能夠指定一個分析的,而後這個fieldType的類型是solr.TextField,solr.TextField只有這種類型能夠定義分析器。
開始配置業務域(業務域的定義),以下所示:
1 <!-- IKAnalyzer--> 2 <!-- 域的定義和域的類型,而後就能夠定義本身的業務域了 --> 3 <!-- 自定義分析器,name是本身的名稱,不要重複--> 4 <!-- 定義本身的fieldType,而後指定了name爲text_ik,類型是solr.TextField --> 5 <fieldType name="text_ik" class="solr.TextField"> 6 <!--指定analyzer是IK analyzer--> 7 <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 8 </fieldType> 9 10 <!-- 定義本身的業務域 --> 11 <!-- 本來solr裏面已經有了id,因此這個id能夠不用定義了 --> 12 <!-- String類型是不分詞的,可是創建索引的。Text類型是既分詞也創建索引。 --> 13 <field name="item_title" type="text_ik" indexed="true" stored="true"/> 14 <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/> 15 <field name="item_price" type="long" indexed="true" stored="true"/> 16 <field name="item_image" type="string" indexed="false" stored="true" /> 17 <field name="item_category_name" type="string" indexed="true" stored="true" /> 18 <field name="item_desc" type="text_ik" indexed="true" stored="false" /> 19 20 <!-- item_keywords創建了幾個複製域。複製域就是把某幾個域都複製到這裏面去,進行統一管理。而後這個域就包含了複製域的所有內容。未來搜索的時候只要搜索包含複製域的便可。 --> 21 <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> 22 <copyField source="item_title" dest="item_keywords"/> 23 <copyField source="item_sell_point" dest="item_keywords"/> 24 <copyField source="item_category_name" dest="item_keywords"/>
業務數據SQL編寫。首先重啓你的tomcat。配置好業務域,重啓完了tomct,如何看本身的業務域是否好使呢。以下所示:
fieldType的分詞效果,找到自定義分析器text_ik。
而後呢,測試item_title的分詞效果。
如上效果,說明你的業務域就已經生效了。有了業務域,須要將數據從數據庫導入到索引庫中去。這裏不推薦使用Dataimport進行數據導入的。
使用solrj能夠將數據庫的數據導入到索引庫裏面的。(注意:solr裏面的更新操做就是新增,根據id查找到該數據,而後將它刪除了,再添加一條新的數據)。
1 package com.taotao.search.service; 2 3 import java.io.IOException; 4 5 import org.apache.solr.client.solrj.SolrServer; 6 import org.apache.solr.client.solrj.SolrServerException; 7 import org.apache.solr.client.solrj.impl.HttpSolrServer; 8 import org.apache.solr.common.SolrInputDocument; 9 import org.junit.Test; 10 11 /** 12 * 13 * @ClassName: TaoTaoSolrJ.java 14 * @author: biehl 15 * @since: 2019年9月7日 下午2:30:05 16 * @Copyright: ©2019 biehl 版權全部 17 * @version: 0.0.1 18 * @Description: 19 */ 20 public class TaoTaoSolrJ { 21 22 @Test 23 public void taotaoSolrJ() { 24 try { 25 // 向solr裏面添加文檔 26 // 一、建立SolrServer對象。建立一個HttpSolrServer對象 27 SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1"); 28 // 二、須要指定Solr服務的url 29 // 三、建立一個文檔對象SolrInputDocument 30 SolrInputDocument document = new SolrInputDocument(); 31 // 四、向文檔中添加域,必須寫id域,域的名稱必須在schema.xml中定義 32 document.addField("id", "test002"); 33 document.addField("item_title", "測試商品1"); 34 document.addField("item_sell_point", "測試商品好的很"); 35 document.addField("item_price", 1000); 36 document.addField("item_image", "testimg"); 37 document.addField("item_category_name", "搞什麼啊"); 38 document.addField("item_desc", "你妹的"); 39 40 // 五、把文檔對象寫入到索引庫中 41 server.add(document); 42 // 六、提交 43 server.commit(); 44 } catch (SolrServerException e) { 45 e.printStackTrace(); 46 } catch (IOException e) { 47 e.printStackTrace(); 48 } 49 50 } 51 52 @Test 53 public void taotaoSolrJDeleteById() { 54 try { 55 // 向solr裏面添加文檔 56 // 一、建立SolrServer對象。建立一個HttpSolrServer對象 57 SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1"); 58 59 //二、 刪除操做 60 server.deleteById("test001"); 61 62 // 三、提交 63 server.commit(); 64 } catch (SolrServerException e) { 65 e.printStackTrace(); 66 } catch (IOException e) { 67 e.printStackTrace(); 68 } 69 70 } 71 72 @Test 73 public void taotaoSolrJDeleteByQuery() { 74 try { 75 // 向solr裏面添加文檔 76 // 一、建立SolrServer對象。建立一個HttpSolrServer對象 77 SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1"); 78 79 //二、 刪除操做 80 server.deleteByQuery("id:test002"); 81 82 // 三、提交 83 server.commit(); 84 } catch (SolrServerException e) { 85 e.printStackTrace(); 86 } catch (IOException e) { 87 e.printStackTrace(); 88 } 89 90 } 91 92 }
點擊Execute Query就能夠進行查詢操做了的。
刪除之後以下所示:
查詢solr的方法使用:
1 package com.taotao.search.service; 2 3 import java.io.IOException; 4 import java.util.List; 5 import java.util.Map; 6 7 import org.apache.solr.client.solrj.SolrQuery; 8 import org.apache.solr.client.solrj.SolrServer; 9 import org.apache.solr.client.solrj.SolrServerException; 10 import org.apache.solr.client.solrj.impl.HttpSolrServer; 11 import org.apache.solr.client.solrj.response.QueryResponse; 12 import org.apache.solr.common.SolrDocument; 13 import org.apache.solr.common.SolrDocumentList; 14 import org.apache.solr.common.SolrInputDocument; 15 import org.junit.Test; 16 17 /** 18 * 19 * @ClassName: TaoTaoSolrJ.java 20 * @author: biehl 21 * @since: 2019年9月7日 下午2:30:05 22 * @Copyright: ©2019 biehl 版權全部 23 * @version: 0.0.1 24 * @Description: 25 */ 26 public class TaoTaoSolrJ { 27 28 29 @Test 30 public void searchDocument() { 31 try { 32 // 一、建立一個SolrServer對象 33 SolrServer solrServer = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1"); 34 // 二、建立一個SolrQuery對象 35 SolrQuery solrQuery = new SolrQuery(); 36 // 三、設置查詢條件,過濾條件,分頁條件,排序條件,高亮 37 // key的q就是指查詢條件。 38 // solrQuery.set("q", "*:*"); //等價於solrQuery.setQuery("*:*"); 39 // 查詢全部的不能指定高亮的。 40 // solrQuery.setQuery("*:*");// *:*是查詢出全部的。 41 // 這裏沒有指定在那裏域上面進行搜索,因此須要指定默認搜索域 42 solrQuery.setQuery("手機"); 43 // 分頁默認是0-10。分頁條件。 44 solrQuery.setStart(0);// 起始數 45 solrQuery.setRows(20);// 查詢出多少條 46 // 設置默認搜索域。 47 solrQuery.set("df", "item_keywords"); 48 // 設置高亮。 49 solrQuery.setHighlight(true);// 開啓高亮 50 // 設置高亮顯示的域 51 solrQuery.addHighlightField("item_title"); 52 // 設置高亮顯示的前綴和後綴 53 solrQuery.setHighlightSimplePre("<em>"); 54 solrQuery.setHighlightSimplePost("</em>"); 55 56 // 四、執行查詢,獲得一個Response對象 57 QueryResponse response = solrServer.query(solrQuery); 58 59 // 五、取出查詢結果總記錄數 60 SolrDocumentList solrDocumentList = response.getResults(); 61 // 查詢出結果總記錄數 62 System.out.println("查詢結果總記錄數: " + solrDocumentList.getNumFound()); 63 64 for (SolrDocument solrDocument : solrDocumentList) { 65 System.out.println("id : " + solrDocument.get("id")); 66 // 取出高亮顯示 67 Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); 68 List<String> list = highlighting.get(solrDocument.get("id")).get("item_title"); 69 String itemTitle = ""; 70 if (list != null && list.size() > 0) { 71 itemTitle = list.get(0); 72 } else { 73 itemTitle = (String) solrDocument.get("item_title"); 74 } 75 System.out.println(itemTitle); 76 // System.out.println("item_title : " + solrDocument.get("item_title")); 77 System.out.println("item_price : " + solrDocument.get("item_price")); 78 System.out.println("item_image : " + solrDocument.get("item_image")); 79 System.out.println("item_category_name : " + solrDocument.get("item_category_name")); 80 System.out.println("item_desc : " + solrDocument.get("item_desc")); 81 System.out.println("============================================="); 82 } 83 84 } catch (SolrServerException e) { 85 e.printStackTrace(); 86 } 87 88 } 89 90 }
效果以下所示:
2019-09-08 15:52:30
一、記錄了Solr單機版第二種部署方案:
將solr的安裝包傳到機器上之後,進行解壓縮操做。
[root@localhost package]# tar -zxvf solr-4.10.3.tgz.tar -C /home/hadoop/soft/
1 [root@localhost soft]# ls 2 apache-tomcat-7.0.47 dubbo-admin-2.5.4.war jdk1.7.0_55 redis-3.0.0 solr-4.10.3 zookeeper-3.4.6 3 [root@localhost soft]# cd solr-4.10.3/ 4 [root@localhost solr-4.10.3]# ls 5 bin contrib docs licenses LUCENE_CHANGES.txt README.txt 6 CHANGES.txt dist example LICENSE.txt NOTICE.txt SYSTEM_REQUIREMENTS.txt 7 [root@localhost solr-4.10.3]# ll 8 total 996 9 drwxr-xr-x. 2 root root 4096 Sep 8 00:35 bin 10 -rw-r--r--. 1 root root 406208 Dec 9 2014 CHANGES.txt 11 drwxr-xr-x. 13 root root 4096 Dec 9 2014 contrib 12 drwxr-xr-x. 4 root root 4096 Sep 8 00:35 dist 13 drwxr-xr-x. 17 root root 4096 Sep 8 00:35 docs 14 drwxr-xr-x. 15 root root 4096 Sep 8 00:35 example 15 drwxr-xr-x. 2 root root 28672 Sep 8 00:35 licenses 16 -rw-r--r--. 1 root root 12646 Dec 1 2014 LICENSE.txt 17 -rw-r--r--. 1 root root 501873 Dec 8 2014 LUCENE_CHANGES.txt 18 -rw-r--r--. 1 root root 24655 Dec 1 2014 NOTICE.txt 19 -rw-r--r--. 1 root root 5344 Dec 1 2014 README.txt 20 -rw-r--r--. 1 root root 850 Dec 1 2014 SYSTEM_REQUIREMENTS.txt
解壓縮之後的目錄介紹以下所示:
1 bin:solr的運行腳本 2 contrib:solr的一些貢獻軟件/插件,用於加強solr的功能。 3 dist:該目錄包含build過程當中產生的war和jar文件,以及相關的依賴文件。docs:solr的API文檔 4 example:solr工程的例子目錄: 5 example/solr: 6 該目錄是一個包含了默認配置信息的Solr的Core目錄。 7 example/multicore: 8 該目錄包含了在Solr的multicore中設置的多個Core目錄。 9 example/webapps: 10 該目錄中包括一個solr.war,該war可做爲solr的運行實例工程。 11 licenses:solr相關的一些許可信息
solr須要運行在一個Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默認提供Jetty(java寫的Servlet容器),本教程使用Tocmat做爲Servlet容器,環境以下:
Solr:Solr4.10.3
Jdk:jdk1.7.0_72
Tomcat:apache-tomcat-7.0.53。
二、而後進入到solr的目錄裏面。將solr-4.10.3/example/webapps/solr.war文件到tomcat的webapps中。
1 [root@localhost soft]# cd solr-4.10.3/example/webapps/ 2 [root@localhost webapps]# ls 3 solr.war 4 [root@localhost webapps]#
1 將solr-4.10.3/example/webapps/solr.war文件到tomcat的webapps中。 2 # 建立一個sole目錄 3 [root@localhost ~]# cd /usr/local/ 4 [root@localhost local]# ls 5 bin etc games include lib libexec redis redis-cluster sbin share src 6 [root@localhost local]# mkdir solr 7 # 解壓縮tomcat包,將tomcat移動到建立的solr目錄裏面 8 [root@localhost package]# tar -zxvf apache-tomcat-7.0.47.tar.gz 9 [root@localhost package]# ls 10 apache-tomcat-7.0.47 jdk-7u55-linux-i586.tar.gz redis-3.0.0.tar.gz zookeeper-3.4.6.tar.gz 11 apache-tomcat-7.0.47.tar.gz redis-3.0.0.gem solr-4.10.3.tgz.tar 12 [root@localhost package]# 13 [root@localhost package]# mv apache-tomcat-7.0.47 /usr/local/solr/tomcat 14 [root@localhost package]# cd /usr/local/solr/ 15 [root@localhost solr]# ls 16 tomcat 17 [root@localhost solr]# 18 # 將solr.war移動到tomcat的webapps中。並檢查是否移動到了tomcat的webapps中。 19 [root@localhost soft]# ls 20 apache-tomcat-7.0.47 dubbo-admin-2.5.4.war jdk1.7.0_55 redis-3.0.0 solr-4.10.3 zookeeper-3.4.6 21 [root@localhost soft]# cd solr-4.10.3/example/webapps/ 22 [root@localhost webapps]# ls 23 solr.war 24 [root@localhost webapps]# cp solr.war /usr/local/solr/tomcat/webapps/ 25 [root@localhost webapps]# cd /usr/local/solr/tomcat/webapps/ 26 [root@localhost webapps]# ls 27 docs examples host-manager manager ROOT solr.war 28 [root@localhost webapps]#
而後進行解壓縮solr.war包。
1 [root@localhost webapps]# mkdir solr && unzip solr.war -d solr && rm -rf solr.war 2 [root@localhost webapps]# ls 3 docs examples host-manager manager ROOT solr
而後修改解壓縮好的solr文件夾,修改其web.xml配置文件。
1 [root@localhost webapps]# ls 2 docs examples host-manager manager ROOT solr 3 [root@localhost webapps]# cd solr/ 4 [root@localhost solr]# ls 5 admin.html css favicon.ico img js META-INF tpl WEB-INF 6 [root@localhost solr]# cd WEB-INF/ 7 [root@localhost WEB-INF]# ls 8 lib weblogic.xml web.xml
查找到env-entry內容,解開註釋文本。並修改solr/home的地址。而後進行保存退出便可。
這裏的solrhome是我解壓縮的solr的路徑地址。這個地址能夠根據本身的解壓縮路徑進行配置便可。
1 <env-entry> 2 <env-entry-name>solr/home</env-entry-name> 3 <env-entry-value>/home/hadoop/soft/solr-4.10.3/example/solr</env-entry-value> 4 <env-entry-type>java.lang.String</env-entry-type> 5 </env-entry>
拷貝相關的jar包到tomcat目錄下面。
1 [root@localhost solr]# cd /home/hadoop/soft/ 2 [root@localhost soft]# clear 3 [root@localhost soft]# ls 4 apache-tomcat-7.0.47 dubbo-admin-2.5.4.war jdk1.7.0_55 redis-3.0.0 solr-4.10.3 zookeeper-3.4.6 5 [root@localhost soft]# cd solr-4.10.3/example/lib/ext/ && cp * /usr/local/solr/tomcat/lib/ 6 [root@localhost ext]# ls /usr/local/solr/tomcat/lib/ 7 annotations-api.jar el-api.jar log4j-1.2.17.jar tomcat-coyote.jar tomcat-util.jar 8 catalina-ant.jar jasper-el.jar servlet-api.jar tomcat-dbcp.jar websocket-api.jar 9 catalina-ha.jar jasper.jar slf4j-api-1.7.6.jar tomcat-i18n-es.jar 10 catalina.jar jcl-over-slf4j-1.7.6.jar slf4j-log4j12-1.7.6.jar tomcat-i18n-fr.jar 11 catalina-tribes.jar jsp-api.jar tomcat7-websocket.jar tomcat-i18n-ja.jar 12 ecj-4.2.2.jar jul-to-slf4j-1.7.6.jar tomcat-api.jar tomcat-jdbc.jar
而後啓動tomcat便可。能夠查看啓動日誌。
1 [root@localhost local]# ls 2 bin etc games include lib libexec redis redis-cluster sbin share solr src 3 [root@localhost local]# clear 4 [root@localhost local]# ls 5 bin etc games include lib libexec redis redis-cluster sbin share solr src 6 [root@localhost local]# cd solr/tomcat/ 7 [root@localhost tomcat]# ls 8 bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 9 [root@localhost tomcat]# bin/startup.sh 10 Using CATALINA_BASE: /usr/local/solr/tomcat 11 Using CATALINA_HOME: /usr/local/solr/tomcat 12 Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp 13 Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55 14 Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar 15 [root@localhost tomcat]# tailf logs/catalina.out 16 Sep 08, 2019 1:24:20 AM org.apache.catalina.startup.HostConfig deployDirectory 17 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-manager 18 Sep 08, 2019 1:24:20 AM org.apache.catalina.startup.HostConfig deployDirectory 19 INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docs 20 Sep 08, 2019 1:24:20 AM org.apache.coyote.AbstractProtocol start 21 INFO: Starting ProtocolHandler ["http-bio-8080"] 22 Sep 08, 2019 1:24:20 AM org.apache.coyote.AbstractProtocol start 23 INFO: Starting ProtocolHandler ["ajp-bio-8009"] 24 Sep 08, 2019 1:24:20 AM org.apache.catalina.startup.Catalina start 25 INFO: Server startup in 5854 ms
經過瀏覽器訪問便可。能夠看到solr提供的主頁。
待續......