Solr单机版的安装与使用
Posted 推荐师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr单机版的安装与使用相关的知识,希望对你有一定的参考价值。
1、Solr的运行需要java环境(Solr是java开发实现的,Solr相当于是一个web的war工程,需要部署到容器里面,可以选择jetty或者tomcat),所以自己先安装jdk吧,这里安装的是jdk1.7.0_55。
安装过程步骤大致如下所示:
[root@localhost package]# ls
apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz
[root@localhost package]# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/soft/
[root@localhost package]# vim /etc/profile
[root@localhost package]# source /etc/profile
[root@localhost package]# java
[root@localhost package]# javac
[root@localhost package]# java -version
2、将Solr的压缩包上传到服务器上面,solr-4.10.3.tgz.tgz,然后进行解压缩操作。
注意:Solr的目录介绍。
a、bin里面命令是启动solr的二进制命令,一般不适用此中方式启动,bin里面的命令会默认启动solr服务(使用的是jetty容器,jetty是一个servlet容器,直接启动bin/solr也可以启动,但是一般不适用)。
b、contrib是扩展包。
c、dist里面有solr的war包(solr-4.10.3.war),可以将solr部署到tomcat服务器中。solr-solrj-4.10.3.jar是solr的客户端。
d、docs是文档。
e、example是案例,example里面的solr可以作为solr home(solr的家,里面保存了solr服务所有的配置文件、solr库)。
你可以使用solr和jetty整合,也可以和tomcat整合,因为比较熟悉tomcat,所以这里整合tomcat。
[root@localhost package]# tar -zxvf solr-4.10.3.tgz.tgz -C /home/hadoop/soft/
[root@localhost package]# ls
apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz
[root@localhost package]# tar -zxvf solr-4.10.3.tgz.tgz -C /home/hadoop/soft/
[root@localhost package]# ls
apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz
[root@localhost package]# cd ..
[root@localhost hadoop]# ls
package soft
[root@localhost hadoop]# cd soft/
[root@localhost soft]# ls
jdk1.7.0_55 solr-4.10.3
[root@localhost solr-4.10.3]# ls
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
[root@localhost solr-4.10.3]#
3、安装tomcat服务器。
[root@localhost package]# tar -zxvf apache-tomcat-7.0.47.tar.gz -C /home/hadoop/soft/
[root@localhost package]# ls
apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz
[root@localhost package]# tar -zxvf apache-tomcat-7.0.47.tar.gz -C /home/hadoop/soft/
然后将tomcat安装到/user/local目录里面:
[ ]
[ ]
[ ]
[ ]
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[ ]
4、部署好tomcat以后,将war包部署到tomcat下面即可。然后进行解压缩solr操作,启动tomcat就可以完成solr的解压缩操作。
[ ]
You have mail in /var/spool/mail/root
[ ]
[ ]
docs examples host-manager manager ROOT solr-4.10.3.war
[ ]
启动tomcat完成解压缩solr的war包。
[root@localhost webapps]# cd /usr/local/solr/tomcat/
[root@localhost tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@localhost tomcat]# bin/startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]# tail -f logs/catalina.out
Sep 01, 2019 5:16:20 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/manager
Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOT
Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examples
Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-manager
Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docs
Sep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.Catalina start
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包操作。
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@localhost tomcat]# bin/shutdown.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]#
复制一些日志相关的jar包加到solr里面
[root@localhost soft]# cd solr-4.10.3/
[root@localhost solr-4.10.3]# ls
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
[root@localhost solr-4.10.3]# clear
[root@localhost solr-4.10.3]# ls
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
[root@localhost solr-4.10.3]# cd example/
[root@localhost example]# ls
contexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps
[root@localhost example]# cd lib/
[root@localhost lib]# ls
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
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
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
[root@localhost lib]# cd ext/
[root@localhost ext]# ls
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
[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/
[root@localhost ext]# cd /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/
[root@localhost lib]# ls
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
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
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
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
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
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
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
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
[root@localhost lib]#
操作如下所示:
复制完jar包,开始配置solr home。
[ ]
[ ]
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
[ ]
[ ]
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
[ ]
[ ]
contexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps
[ ]
[ ]
[ ]
bin collection1 README.txt solr.xml zoo.cfg
[ ]
然后进行solr home的配置文件配置,solr也已经安装好了,solrhome也已经配置好了,然后将将solr和solrhome进行关联,建立关系,solr不知道solrhome在那里,那么
配置一下,告诉solr,solrhome在那里。操作方式有,可以修改tomcat的配置文件,或者去修改solr的web.xml,这种方式比较简单。建议使用。
[ ]
anaconda-ks.cfg Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates Videos
[ ]
[ ]
lib weblogic.xml web.xml
[ ]
配置方式如下所示:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<!-- <env-entry-value>/put/your/solr/home/here</env-entry-value> -->
<env-entry-value>/usr/local/solr/solrhome/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
这样你的solr就已经配置好了,然后启动你的tomcat即可。
[root@localhost WEB-INF]# cd /usr/local/solr/tomcat/
[root@localhost tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@localhost tomcat]# clear
[root@localhost tomcat]# bin/startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat
Using CATALINA_HOME: /usr/local/solr/tomcat
Using CATALINA_TMPDIR: /usr/local/solr/tomcat/temp
Using JRE_HOME: /home/hadoop/soft/jdk1.7.0_55
Using CLASSPATH: /usr/local/solr/tomcat/bin/bootstrap.jar:/usr/local/solr/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]# tail -f logs/catalina.out
Sep 03, 2019 5:32:27 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 03, 2019 5:32:27 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1850 ms
Sep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Sep 03, 2019 5:32:28 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/local/solr/tomcat/webapps/solr-4.10.3.war
log4j:WARN No appenders could be found for logger (org.apache.solr.client.solrj.impl.HttpClientUtil).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Sep 03, 2019 5:32:41 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/manager
Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOT
Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examples
Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-manager
Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docs
Sep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 14797 ms
可以查看启动信息,然后启动完成了以后可以通过页面查看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传到自己的服务器上面。
[root@localhost package]# ll
total 292832
-rwxrw-rw-. 1 root root 8234674 Jul 27 22:27 apache-tomcat-7.0.47.tar.gz
drwxr-xr-x. 3 root root 4096 Sep 5 05:34 IK Analyzer 2012FF_hf1
-rw-r--r--. 1 root root 2142180 Sep 5 05:34 IK Analyzer 2012FF_hf1.rar
-rwxrw-rw-. 1 root root 139463702 Jul 27 22:35 jdk-7u55-linux-i586.tar.gz
-rwxrw-rw-. 1 root root 150010621 Jul 27 22:33 solr-4.10.3.tgz.tgz
[root@localhost package]# cd IK\ Analyzer\ 2012FF_hf1
[root@localhost IK Analyzer 2012FF_hf1]# ls
doc ext_stopword.dic IKAnalyzer2012FF_u1.jar IKAnalyzer.cfg.xml IKAnalyzer???ķִ???V2012_FFʹ???ֲ?.pdf LICENSE.txt mydict.dic NOTICE.txt
[root@localhost IK Analyzer 2012FF_hf1]# ll
total 2004
drwxr-xr-x. 5 root root 4096 Sep 5 05:34 doc
-rw-r--r--. 1 root root 168 Sep 5 05:34 ext_stopword.dic
-rw-r--r--. 1 root root 1165908 Sep 5 05:34 IKAnalyzer2012FF_u1.jar
-rw-r--r--. 1 root root 419 Sep 5 05:34 IKAnalyzer.cfg.xml
-rw-r--r--. 1 root root 841268 Sep 5 05:34 IKAnalyzer???ķִ???V2012_FFʹ???ֲ?.pdf
-rw-r--r--. 1 root root 17778 Sep 5 05:34 LICENSE.txt
-rw-r--r--. 1 root root 34 Sep 5 05:34 mydict.dic
-rw-r--r--. 1 root root 278 Sep 5 05:34 NOTICE.txt
[root@localhost IK Analyzer 2012FF_hf1]#
然后将IKAnalyzer2012FF_u1.jar这个jar包添加到solr里面。
[root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/
[root@localhost IK Analyzer 2012FF_hf1]# ll /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/IKAnalyzer2012FF_u1.jar
-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
[root@localhost IK Analyzer 2012FF_hf1]#
然后将ext_stopword.dic这个是提供词词典,IKAnalyzer.cfg.xml这个是配置文件,mydict.dic这个是扩展词词典添加到classpath里面。对于这个solr项目的classpath相当于在WEB-INF下面的classes。
total 16
drwxr-xr-x. 2 root root 4096 Sep 5 05:39 lib
-rw-r--r--. 1 root root 1210 Dec 1 2014 weblogic.xml
-rw-r--r--. 1 root root 7117 Sep 3 05:30 web.xml
[root@localhost IK Analyzer 2012FF_hf1]# mkdir /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/clases
[root@localhost IK Analyzer 2012FF_hf1]#
[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
[root@localhost IK Analyzer 2012FF_hf1]# ll /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/classes
total 12
-rw-r--r--. 1 root root 168 Sep 5 05:44 ext_stopword.dic
-rw-r--r--. 1 root root 419 Sep 5 05:44 IKAnalyzer.cfg.xml
-rw-r--r--. 1 root root 34 Sep 5 05:44 mydict.dic
[root@localhost IK Analyzer 2012FF_hf1]#
然后,这个中文分析器就配置好了。然后呢,开始定义fieldType,然后指定我们使用这个中文分析器,在solrhome里面定义我们的fieldType。路径是这里,/usr/local/solr/solrhome/collection1/conf,然后这个cong里面两个配置文件,两个配置文件比较重要schema.xml和solrconfig.xml。solrconfig.xml这个配置文件,配置了solr服务的相关配置,schema.xml配置了所有使用到的业务域(业务域和业务域的类型)。
[root@localhost ~]# cd /usr/local/solr/solrhome/
[root@localhost solrhome]# ls
bin collection1 README.txt solr.xml zoo.cfg
[root@localhost solrhome]# ll
total 20
drwxr-xr-x. 2 root root 4096 Sep 1 05:27 bin
drwxr-xr-x. 4 root root 4096 Sep 3 05:32 collection1
-rw-r--r--. 1 root root 2473 Sep 1 05:27 README.txt
-rw-r--r--. 1 root root 1715 Sep 1 05:27 solr.xml
-rw-r--r--. 1 root root 501 Sep 1 05:27 zoo.cfg
[root@localhost solrhome]# cd collection1/
[root@localhost collection1]# ls
conf core.properties data README.txt
[root@localhost collection1]# cd conf/
[root@localhost conf]# ls
admin-extra.html clustering lang protwords.txt _schema_analysis_synonyms_english.json solrconfig.xml synonyms.txt xslt
admin-extra.menu-bottom.html currency.xml mapping-FoldToASCII.txt _rest_managed.json schema.xml spellings.txt update-script.js
admin-extra.menu-top.html elevate.xml mapping-ISOLatin1Accent.txt _schema_analysis_stopwords_english.json scripts.conf stopwords.txt velocity
[root@localhost conf]# ll
total 292
-rw-r--r--. 1 root root 1068 Sep 1 05:27 admin-extra.html
-rw-r--r--. 1 root root 928 Sep 1 05:27 admin-extra.menu-bottom.html
-rw-r--r--. 1 root root 926 Sep 1 05:27 admin-extra.menu-top.html
drwxr-xr-x. 3 root root 4096 Sep 1 05:27 clustering
-rw-r--r--. 1 root root 3974 Sep 1 05:27 currency.xml
-rw-r--r--. 1 root root 1348 Sep 1 05:27 elevate.xml
drwxr-xr-x. 2 root root 4096 Sep 1 05:27 lang
-rw-r--r--. 1 root root 78514 Sep 1 05:27 mapping-FoldToASCII.txt
-rw-r--r--. 1 root root 2868 Sep 1 05:27 mapping-ISOLatin1Accent.txt
-rw-r--r--. 1 root root 873 Sep 1 05:27 protwords.txt
-rw-r--r--. 1 root root 33 Sep 1 05:27 _rest_managed.json
-rw-r--r--. 1 root root 450 Sep 1 05:27 _schema_analysis_stopwords_english.json
-rw-r--r--. 1 root root 172 Sep 1 05:27 _schema_analysis_synonyms_english.json
-rw-r--r--. 1 root root 60689 Sep 1 05:27 schema.xml
-rw-r--r--. 1 root root 921 Sep 1 05:27 scripts.conf
-rw-r--r--. 1 root root 74827 Sep 1 05:27 solrconfig.xml
-rw-r--r--. 1 root root 13 Sep 1 05:27 spellings.txt
-rw-r--r--. 1 root root 781 Sep 1 05:27 stopwords.txt
-rw-r--r--. 1 root root 1119 Sep 1 05:27 synonyms.txt
-rw-r--r--. 1 root root 1416 Sep 1 05:27 update-script.js
drwxr-xr-x. 2 root root 4096 Sep 1 05:27 velocity
drwxr-xr-x. 2 root root 4096 Sep 1 05:27 xslt
[root@localhost conf]#
然后开始配置schema.xml。路径是这里,/usr/local/solr/solrhome/collection1/conf,然后这个cong里面两个配置文件,两个配置文件比较重要schema.xml和solrconfig.xml。solrconfig.xml这个配置文件,配置了solr服务的相关配置,schema.xml配置了所有使用到的业务域。
定义一个fieldType可以指定一个分析的,然后这个fieldType的类型是solr.TextField,solr.TextField只有这种类型可以定义分析器。
开始配置业务域(业务域的定义),如下所示:
<!-- IKAnalyzer-->
<!-- 域的定义和域的类型,然后就可以定义自己的业务域了 -->
<!-- 自定义分析器,name是自己的名称,不要重复-->
<!-- 定义自己的fieldType,然后指定了name为text_ik,类型是solr.TextField -->
<fieldType name="text_ik" class="solr.TextField">
<!--指定analyzer是IK analyzer-->
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!-- 定义自己的业务域 -->
<!-- 原本solr里面已经有了id,所以这个id可以不用定义了 -->
<!-- String类型是不分词的,但是建立索引的。Text类型是既分词也建立索引。-->
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />
<!-- item_keywords建立了几个复制域。复制域就是把某几个域都复制到这里面去,进行统一管理。然后这个域就包含了复制域的全部内容。将来搜索的时候只要搜索包含复制域的即可。-->
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
业务数据SQL编写。首先重启你的tomcat。配置好业务域,重启完了tomct,如何看自己的业务域是否好使呢。如下所示:
fieldType的分词效果,找到自定义分析器text_ik。
然后呢,测试item_title的分词效果。
如上效果,说明你的业务域就已经生效了。有了业务域,需要将数据从数据库导入到索引库中去。这里不推荐使用Dataimport进行数据导入的。
使用solrj可以将数据库的数据导入到索引库里面的。(注意:solr里面的更新操作就是新增,根据id查找到该数据,然后将它删除了,再添加一条新的数据)。
package com.taotao.search.service;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
/**
*
* @ClassName: TaoTaoSolrJ.java
* @author: biehl
* @since: 2019年9月7日 下午2:30:05
* @Copyright: ©2019 biehl 版权所有
* @version: 0.0.1
* @Description:
*/
public class TaoTaoSolrJ {
public void taotaoSolrJ() {
try {
// 向solr里面添加文档
// 1、创建SolrServer对象。创建一个HttpSolrServer对象
SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1");
// 2、需要指定Solr服务的url
// 3、创建一个文档对象SolrInputDocument
SolrInputDocument document = new SolrInputDocument();
// 4、向文档中添加域,必须写id域,域的名称必须在schema.xml中定义
document.addField("id", "test002");
document.addField("item_title", "测试商品1");
document.addField("item_sell_point", "测试商品好的很");
document.addField("item_price", 1000);
document.addField("item_image", "testimg");
document.addField("item_category_name", "搞什么啊");
document.addField("item_desc", "你妹的");
// 5、把文档对象写入到索引库中
server.add(document);
// 6、提交
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void taotaoSolrJDeleteById() {
try {
// 向solr里面添加文档
// 1、创建SolrServer对象。创建一个HttpSolrServer对象
SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1");
//2、 删除操作
server.deleteById("test001");
// 3、提交
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void taotaoSolrJDeleteByQuery() {
try {
// 向solr里面添加文档
// 1、创建SolrServer对象。创建一个HttpSolrServer对象
SolrServer server = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1");
//2、 删除操作
server.deleteByQuery("id:test002");
// 3、提交
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
点击Execute Query就可以进行查询操作了的。
删除以后如下所示:
查询solr的方法使用:
package com.taotao.search.service;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
/**
*
* @ClassName: TaoTaoSolrJ.java
* @author: biehl
* @since: 2019年9月7日 下午2:30:05
* @Copyright: ©2019 biehl 版权所有
* @version: 0.0.1
* @Description:
*/
public class TaoTaoSolrJ {
@Test
public void searchDocument() {
try {
// 1、创建一个SolrServer对象
SolrServer solrServer = new HttpSolrServer("http://192.168.110.142:8080/solr-4.10.3/collection1");
// 2、创建一个SolrQuery对象
SolrQuery solrQuery = new SolrQuery();
// 3、设置查询条件,过滤条件,分页条件,排序条件,高亮
// key的q就是指查询条件。
// solrQuery.set("q", "*:*"); //等价于solrQuery.setQuery("*:*");
// 查询所有的不能指定高亮的。
// solrQuery.setQuery("*:*");// *:*是查询出所有的。
// 这里没有指定在那里域上面进行搜索,所以需要指定默认搜索域
solrQuery.setQuery("手机");
// 分页默认是0-10。分页条件。
solrQuery.setStart(0);// 起始数
solrQuery.setRows(20);// 查询出多少条
// 设置默认搜索域。
solrQuery.set("df", "item_keywords");
// 设置高亮。
solrQuery.setHighlight(true);// 开启高亮
// 设置高亮显示的域
solrQuery.addHighlightField("item_title");
// 设置高亮显示的前缀和后缀
solrQuery.setHighlightSimplePre("<em>");
solrQuery.setHighlightSimplePost("</em>");
// 4、执行查询,得到一个Response对象
QueryResponse response = solrServer.query(solrQuery);
// 5、取出查询结果总记录数
SolrDocumentList solrDocumentList = response.getResults();
// 查询出结果总记录数
System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println("id : " + solrDocument.get("id"));
// 取出高亮显示
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
String itemTitle = "";
if (list != null && list.size() > 0) {
itemTitle = list.get(0);
} else {
itemTitle = (String) solrDocument.get("item_title");
}
System.out.println(itemTitle);
// System.out.println("item_title : " + solrDocument.get("item_title"));
System.out.println("item_price : " + solrDocument.get("item_price"));
System.out.println("item_image : " + solrDocument.get("item_image"));
System.out.println("item_category_name : " + solrDocument.get("item_category_name"));
System.out.println("item_desc : " + solrDocument.get("item_desc"));
System.out.println("=============================================");
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
}
效果如下所示:
End
Thank you for your reading.
合作:18513753639
以上是关于Solr单机版的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章