Solr单机版的安装与使用

Posted 推荐师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr单机版的安装与使用相关的知识,希望对你有一定的参考价值。

1、Solr的运行需要java环境(Solr是java开发实现的,Solr相当于是一个web的war工程,需要部署到容器里面,可以选择jetty或者tomcat),所以自己先安装jdk吧,这里安装的是jdk1.7.0_55。

安装过程步骤大致如下所示:

[root@localhost package]# lsapache-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]# lsapache-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]# lsapache-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]# lspackage soft[root@localhost hadoop]# cd soft/[root@localhost soft]# lsjdk1.7.0_55 solr-4.10.3[root@localhost solr-4.10.3]# lsbin 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]# lsapache-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目录里面:

[root@localhost soft]# mkdir /usr/local/solr[root@localhost soft]# cp -r apache-tomcat-7.0.47/ /usr/local/solr/tomcat[root@localhost soft]# cd /usr/local/solr/tomcat/[root@localhost tomcat]# lsbin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work[root@localhost tomcat]#

4、部署好tomcat以后,将war包部署到tomcat下面即可。然后进行解压缩solr操作,启动tomcat就可以完成solr的解压缩操作。

[root@localhost tomcat]# cp /home/hadoop/soft/solr-4.10.3/dist/solr-4.10.3.war /usr/local/solr/tomcat/webapps/You have mail in /var/spool/mail/root[root@localhost tomcat]# cd /usr/local/solr/tomcat/webapps/[root@localhost webapps]# lsdocs examples host-manager manager ROOT solr-4.10.3.war[root@localhost webapps]#

启动tomcat完成解压缩solr的war包。

[root@localhost webapps]# cd /usr/local/solr/tomcat/[root@localhost tomcat]# lsbin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work[root@localhost tomcat]# bin/startup.sh Using CATALINA_BASE: /usr/local/solr/tomcatUsing CATALINA_HOME: /usr/local/solr/tomcatUsing CATALINA_TMPDIR: /usr/local/solr/tomcat/tempUsing JRE_HOME: /home/hadoop/soft/jdk1.7.0_55Using 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 deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/managerSep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOTSep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examplesSep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-managerSep 01, 2019 5:16:21 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docsSep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["http-bio-8080"]Sep 01, 2019 5:16:21 AM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["ajp-bio-8009"]Sep 01, 2019 5:16:21 AM org.apache.catalina.startup.Catalina startINFO: 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/tomcatUsing CATALINA_HOME: /usr/local/solr/tomcatUsing CATALINA_TMPDIR: /usr/local/solr/tomcat/tempUsing JRE_HOME: /home/hadoop/soft/jdk1.7.0_55Using 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]# lsbin 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]# lsbin 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]# lscontexts 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]# lsext 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.jarjetty-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.jarjetty-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]# lsjcl-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]# lsantlr-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.jarasm-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.jarasm-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.jarcommons-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.jarcommons-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.jarcommons-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.jarcommons-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.jarcommons-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]#

操作如下所示:

Solr单机版的安装与使用

复制完jar包,开始配置solr home。

[root@localhost solr-4.10.3]# cd /home/hadoop/soft/solr-4.10.3/[root@localhost solr-4.10.3]# lsbin 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]# lsbin 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]# lscontexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps[root@localhost example]# cp -r solr /usr/local/solr/solrhome [root@localhost example]# cd /usr/local/solr/solrhome/[root@localhost solrhome]# lsbin collection1 README.txt solr.xml zoo.cfg[root@localhost solrhome]#

Solr单机版的安装与使用

然后进行solr home的配置文件配置,solr也已经安装好了,solrhome也已经配置好了,然后将将solr和solrhome进行关联,建立关系,solr不知道solrhome在那里,那么

配置一下,告诉solr,solrhome在那里。操作方式有,可以修改tomcat的配置文件,或者去修改solr的web.xml,这种方式比较简单。建议使用。

[root@localhost ~]# lsanaconda-ks.cfg Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates Videos[root@localhost ~]# cd /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/[root@localhost WEB-INF]# lslib weblogic.xml web.xml[root@localhost WEB-INF]# vim 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单机版的安装与使用

这样你的solr就已经配置好了,然后启动你的tomcat即可。

[root@localhost WEB-INF]# cd /usr/local/solr/tomcat/[root@localhost tomcat]# lsbin 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/tomcatUsing CATALINA_HOME: /usr/local/solr/tomcatUsing CATALINA_TMPDIR: /usr/local/solr/tomcat/tempUsing JRE_HOME: /home/hadoop/soft/jdk1.7.0_55Using 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 initINFO: Initializing ProtocolHandler ["ajp-bio-8009"]Sep 03, 2019 5:32:27 AM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 1850 msSep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardService startInternalINFO: Starting service CatalinaSep 03, 2019 5:32:28 AM org.apache.catalina.core.StandardEngine startInternalINFO: Starting Servlet Engine: Apache Tomcat/7.0.47Sep 03, 2019 5:32:28 AM org.apache.catalina.startup.HostConfig deployWARINFO: Deploying web application archive /usr/local/solr/tomcat/webapps/solr-4.10.3.warlog4j: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 deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/managerSep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/ROOTSep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/examplesSep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/host-managerSep 03, 2019 5:32:42 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /usr/local/solr/tomcat/webapps/docsSep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["http-bio-8080"]Sep 03, 2019 5:32:42 AM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["ajp-bio-8009"]Sep 03, 2019 5:32:42 AM org.apache.catalina.startup.Catalina startINFO: Server startup in 14797 ms

可以查看启动信息,然后启动完成了以后可以通过页面查看solr的信息:

Solr单机版的安装与使用

关于solr的collection,一个collection就是一个独立的索引库。不同的collection之前的索引库没有关系。

Solr单机版的安装与使用

如何将mysql中的业务数据导入到solr里面呢?

  首先判断出需要将哪些字段添加到solr里面,然后将这些字段加到索引库里面,solr里面有一个要求,添加一个文档的时候,这个文档必须有一个id,如果要添加文档,那么这些域必须在schema.xml里面定义好,避免随便添加其他字段的情况,在schema.xml里面定义的话,需要修改一下schema.xml的配置文件,在这里面定义我们自己的业务域,由于我们使用的是中文,所以要指定一个中文分析器,先将业务域定义好(判断好的哪些字段,定义业务域),然后向这里面导入数据就可以了,中文分析器要使用IK Analyzer 2012FF_hf1。

Solr单机版的安装与使用

注意: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]# lltotal 292832-rwxrw-rw-. 1 root root 8234674 Jul 27 22:27 apache-tomcat-7.0.47.tar.gzdrwxr-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]# lsdoc 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]# lltotal 2004drwxr-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 16drwxr-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/classestotal 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]# lsbin collection1 README.txt solr.xml zoo.cfg[root@localhost solrhome]# lltotal 20drwxr-xr-x. 2 root root 4096 Sep 1 05:27 bindrwxr-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]# lsconf core.properties data README.txt[root@localhost collection1]# cd conf/[root@localhost conf]# lsadmin-extra.html clustering lang protwords.txt _schema_analysis_synonyms_english.json solrconfig.xml synonyms.txt xsltadmin-extra.menu-bottom.html currency.xml mapping-FoldToASCII.txt _rest_managed.json schema.xml spellings.txt update-script.jsadmin-extra.menu-top.html elevate.xml mapping-ISOLatin1Accent.txt _schema_analysis_stopwords_english.json scripts.conf stopwords.txt velocity[root@localhost conf]# lltotal 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.htmldrwxr-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.xmldrwxr-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.jsdrwxr-xr-x. 2 root root 4096 Sep 1 05:27 velocitydrwxr-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只有这种类型可以定义分析器。

开始配置业务域(业务域的定义),如下所示:

Solr单机版的安装与使用

<!-- 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。

Solr单机版的安装与使用

然后呢,测试item_title的分词效果。

Solr单机版的安装与使用

如上效果,说明你的业务域就已经生效了。有了业务域,需要将数据从数据库导入到索引库中去。这里不推荐使用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 {
@Test 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(); }
} @Test 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(); }
} @Test 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单机版的安装与使用

删除以后如下所示:

Solr单机版的安装与使用

查询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(); }
}
}

效果如下所示:

Solr单机版的安装与使用

End


Thank you for your reading.Solr单机版的安装与使用

合作:18513753639





以上是关于Solr单机版的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章

solr单机版安装与基本部署

CentOS7.5搭建Solr7.4.0单机版与集群版

Solr的知识点学习(Solr有问有答哦)

Solr安装(单机版)

Solr单机版的搭建

09.Solr单机版安装配置